如何在Silverlight中加载BitmapImage进行处理?

时间:2011-03-17 18:26:40

标签: silverlight bitmap

如果我取消注释注释行,以下代码将仅显示我的位图的大小(处理所需)。这似乎不适合做事情,但到目前为止,我已经提出了所有可行的方法。我不想将我的位图显示为UI元素中的图像,我只是想处理它。

    BitmapImage bmpi;

    public MainPage()
    {
        InitializeComponent();
        Loaded += new RoutedEventHandler(MainPage_Loaded);
    }

    void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        bmpi = new BitmapImage(new Uri("multicolor.png", UriKind.Relative));

        //Image img = new Image();
        //img.Source = bmpi;
        //LayoutRoot.Children.Add(img);
        //LayoutRoot.Children.Clear();

        MessageBox.Show(bmpi.PixelWidth.ToString());
    }

1 个答案:

答案 0 :(得分:2)

要预先加载图像,您需要将CreateOptions设置为默认值DelayCreation。 然后你可以在ImageOpened事件中获得宽度。

    void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        bmpi = new BitmapImage();
        bmpi.CreateOptions = BitmapCreateOptions.None;
        bmpi.ImageOpened += new EventHandler<RoutedEventArgs>(bmpi_ImageOpened);
        bmpi.UriSource = new Uri("multicolor.png", UriKind.RelativeOrAbsolute);
    }

    void bmpi_ImageOpened(object sender, RoutedEventArgs e)
    {
        MessageBox.Show(bmpi.PixelWidth.ToString());
    }