我正在將圖像加載到我的Silverlight應用程序中。該圖像將作爲紋理貼圖裝入3D模型中。我需要獲取圖像屬性。對於我使用ImageOpened事件,像這樣:如何在Silverlight中獲取圖像的屬性?
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());
}
MessageBox的是顯示了加載圖片的正確值。但這是在場景加載後運行的,所以大小總是默認(0,0)......我不知道如何解決這個問題。我運行了調試器,我注意到場景和模型被渲染,圖片的寬度和高度都是零。在此之後,事件被解僱......我無法弄清楚。
由於提前,
何塞」
我不能這樣做,因爲我有很多對象,這取決於PageLoaded ..我正在使用Kit3D加Silverlight ..我有視口,網格和東西...當我指向imageBrush.ImageSource到img ,因爲我認爲這不取決於InitComponent(這是用於UI的東西) – jose 2009-11-20 12:08:19
我想我看不到足夠的代碼來告訴,例如什麼'MainPage'派生自你的當前問題不可用。無論如何,您都需要將渲染與圖像信息的可用性進行同步。它仍然不清楚爲什麼你不能將當前在PageLoaded中的代碼推遲到ImageOpened事件。 – AnthonyWJones 2009-11-20 13:28:32