我有一个方法,我接受一个小的比如25x25
的BitmapImage作为参数public BitmapImage MakeLargerAndAddBorder(BitmapImage smallImage)
{
...
}
我希望这种方法能够返回一个更大的图像,例如50x50,以编程方式将较小的图像放在中间(不会缩放或改变这个较小的图像),给它一个背景颜色,然后拍一个白色的边框在上面。我想知道这是否可能?这是一个很长的故事,但我没有图像的URL,只有一个现有的BitmapImage对象...我想知道我是否能以某种方式以编程方式将其转换为更大的图像?我一直在谷歌上搜索,但我真的找不到一种以编程方式创建BitmapImage的方法。 (特别是来自现有的)
答案 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中设置图像和边框的大小,它们应该扩展到所需的任何大小。