WPF: Как создать BitmapImage ... из другого BitmapImage? - PullRequest
0 голосов
/ 30 марта 2011

У меня есть метод, где я принимаю в качестве параметра маленькое BitmapImage, скажем, 25x25

public BitmapImage MakeLargerAndAddBorder(BitmapImage smallImage)
{
   ...
}

Я бы хотел, чтобы этот метод возвращал большее изображение, скажем, 50x50, которое программно помещает меньшее изображение всередина (не масштабирует и не изменяет это меньший размер изображения), придает ему цвет фона и накладывает на него белую рамку.Мне интересно, возможно ли это вообще?Это длинная история, но у меня нет URL-адреса изображения, только существующий объект BitmapImage ... Мне интересно, могу ли я каким-то образом программно преобразовать это изображение в большее изображение?Я гуглял по этому поводу, но не могу найти способ программно создать BitmapImage.(особенно из уже существующего)

Ответы [ 2 ]

1 голос
/ 30 марта 2011

Вы хотите WriteableBitmap. :) Просто создайте WriteableBitmap с теми же параметрами, что и у вашего оригинала (с измененным размером). Затем заблокируйте растровое изображение и используйте его свойство BackBuffer для доступа к нижележащим пикселям. Вы должны быть в состоянии использовать метод CopyPixels (), чтобы скопировать исходное изображение в новое.

0 голосов
/ 30 марта 2011

Вот пример того, как сделать это в XAML с небольшим выделением кода.

<Border Width="50" Height="50" BorderThickness="2" BorderBrush="Black">
  <Image x:Name="myImage" Height="25" 
                          Width="25"/>
</Border>

В приведенном ниже коде, если вы не можете предоставить исходный URL (который вы сказали вамневозможно), вы можете установить исходное свойство элемента управления изображением.

myImage.Source = bitmap; // your bitmap object.

Если вы не установите размер изображения и границы в XAML, они должны расшириться до требуемого размера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...