이미지를 배경에로드하는 중입니다. 이미지의 크기와 상관없이 이미지 크기 (또는 최대 또는 최소값)로 크기를 조정할 수있는 실버 캔버스가 필요합니다. 제대로Silverlight 2를 사용하여로드 된 이미지의 크기를 어떻게 알 수 있습니까?
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;
}
}
이미지로드,하지만 난 backgroundImage.Height/폭을 넣어 것없이 (.Loaded 이벤트 오프, .SizeChanged 이벤트 [1], 테두리를 사용 : 그래서 나는 다음과 같은 일을했습니다 [2] 등), 항상 0.0 또는 NaN을 반환합니다. 내가 도대체 뭘 잘못하고있는 겁니까?
[1] http://silverlight.net/forums/t/14855.aspx [2] http://silverlight.net/forums/t/90235.aspx
이것은 매우 인상적입니다. 꽤 간단한 문제처럼 보이는 미친 과잉은 아니겠습니까? 사실 크기를 알 필요조차 없습니다. 실제로 필요한 것은 캔버스의 크기를 정확하게 맞추는 것입니다. – aronchick
너비/높이 대신 backgroundImage.ActualWidth/Height를 사용해 보셨습니까? –
네, 그 사람들은 제가 두려워하는 데 도움이되지 않았습니다. – aronchick