Ich lade ein Bild in einen Hintergrund, und ich möchte, dass die Silverlight-Leinwand, die alles enthält, die Größe der Bildgröße (oder des von mir bestimmten Maximums oder Minimums) der Größe des Bildes ändert. Also habe ich getan, um das folgende:Wie kann ich die Größe eines geladenen Bildes mit Silverlight 2 ermitteln?
private int ImageMargin = 4;
public Page()
{
InitializeComponent();
BitmapImage bi = new BitmapImage(new Uri("1.jpg", UriKind.Relative));
backgroundImage.Source = bi;
bi.DownloadProgress += new EventHandler<DownloadProgressEventArgs>(bi_DownloadProgress);
backgroundImage.SizeChanged += new SizeChangedEventHandler(backgroundImage_SizeChanged);
}
void bi_DownloadProgress(object sender, DownloadProgressEventArgs e)
{
if (e.Progress == 100)
{
LayoutRoot.Height = backgroundImage.Height + ImageMargin * 2;
LayoutRoot.Width = backgroundImage.Width + ImageMargin * 2;
}
}
das Bild korrekt geladen, aber egal, wo ich scheine die backgroundImage.Height/Breite (off .Loaded Ereignis zu setzen, .SizeChanged Ereignis [1], Mit einer Grenze [2] usw.), gibt es immer 0.0 oder NaN zurück. Was mache ich falsch?
[1] http://silverlight.net/forums/t/14855.aspx [2] http://silverlight.net/forums/t/90235.aspx
das ist sehr beeindruckend! Aber ist es nicht ein wahnsinniger Overkill für ein scheinbar einfaches Problem? Ich muss nicht einmal wirklich die Größe wissen, in der Wahrheit, alles was ich wirklich brauche, ist die Leinwand richtig zu dimensionieren. – aronchick
Haben Sie versucht, backgroundImage.ActualWidth/Height anstelle von Width/Height zu verwenden? –
ja, diese haben mir nicht geholfen, ich habe Angst. – aronchick