WPF:如何从另一个BitmapImage创建一个BitmapImage?

时间:2011-03-29 22:26:09

标签: c# wpf image-processing

我有一个方法,我接受一个小的比如25x25

的BitmapImage作为参数
public BitmapImage MakeLargerAndAddBorder(BitmapImage smallImage)
{
   ...
}

我希望这种方法能够返回一个更大的图像,例如50x50,以编程方式将较小的图像放在中间(不会缩放或改变这个较小的图像),给它一个背景颜色,然后拍一个白色的边框在上面。我想知道这是否可能?这是一个很长的故事,但我没有图像的URL,只有一个现有的BitmapImage对象...我想知道我是否能以某种方式以编程方式将其转换为更大的图像?我一直在谷歌上搜索,但我真的找不到一种以编程方式创建BitmapImage的方法。 (特别是来自现有的)

2 个答案:

答案 0 :(得分:1)

你想要WriteableBitmap。 :)只需创建一个与原始参数相同的WriteableBitmap(使用修改后的大小)。然后锁定位图并使用其BackBuffer属性访问基础像素。您应该能够使用CopyPixels()方法将原始图像复制到新图像中。

答案 1 :(得分:0)

这是一个如何在XAML中执行此操作并使用一些代码隐藏的示例。

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

在后面的代码中,如果你不能提供源URL(你说过你不能),你可以设置Image控件的source属性。

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

如果你没有在XAML中设置图像和边框的大小,它们应该扩展到所需的任何大小。