我正在将图像加载到我的 silverlight 应用程序中。该图像将适合作为纹理贴图的 3d 模型。我需要获取图像属性。为此,我正在使用 ImageOpened 事件,如下所示:
public MainPage()
{
BitmapImage img = new BitmapImage(new Uri("imagens/textura.jpg", UriKind.Relative));
img.ImageOpened += new EventHandler<RoutedEventArgs>(img_ImageOpened);
img.ImageFailed += new EventHandler<ExceptionRoutedEventArgs>(img_ImageFailed);
imageBrush.ImageSource = img;
InitializeComponent();
this.Loaded += new RoutedEventHandler(MainPage_Loaded);
this.MouseLeftButtonUp += new MouseButtonEventHandler(MainPage_MouseLeftButtonUp);
(...)
进而:
private void img_ImageOpened(object sender, RoutedEventArgs e)
{
BitmapImage i = sender as BitmapImage;
ImgSize.Width = i.PixelWidth;
ImgSize.Height = i.PixelHeight;
MessageBox.Show("LOADED IMAGE SIZE\n W:" + ImgSize.Width.ToString() + " H:" + ImgSize.Height.ToString());
}
消息框显示加载图片的正确值。但是这是在加载场景后运行的,所以大小总是默认的(0,0)......我不知道如何解决这个问题。我已经运行了调试器,我注意到场景和模型被渲染并且图片的宽度和高度为零。在此之后,事件被触发......我无法弄清楚。
提前致谢,
何塞