Как загрузить BitmapImage для обработки в Silverlight? - PullRequest
1 голос
/ 17 марта 2011

Следующий код покажет размер для моего растрового изображения (необходим для обработки), если я раскомментирую закомментированные строки. Кажется, это неправильно, но все, что я придумал, работает. Я не хочу отображать свое растровое изображение как изображение в элементе пользовательского интерфейса, я просто хочу его обработать.

    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 Ответ

2 голосов
/ 17 марта 2011

Чтобы загрузить изображение заранее, вам нужно установить CreateOptions в значение None из значения по умолчанию, 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());
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...