gpt4 book ai didi

wpf - 在 View 模型 Wpf 中设置图像控制源

转载 作者:行者123 更新时间:2023-12-03 10:31:12 27 4
gpt4 key购买 nike

我有一个包含绑定(bind)到此属性的图像控件的 View :

   private System.Drawing.Image _sigImage;
public System.Drawing.Image sigImage
{
get { return _sigImage; }
set { _sigImage = value; RaisePropertyChanged(); }
}
我正忙于使用 mvvm 实现签名板,并希望签名显示在图像控件中。但是我不能让它显示。
模具签名板的代码是:
  DynamicCapture dc = new DynamicCaptureClass();
DynamicCaptureResult res = dc.Capture(sigCtl, "Who", "Why", null, null);
if (res == DynamicCaptureResult.DynCaptOK)
{

sigObj = (SigObj)sigCtl.Signature;
sigObj.set_ExtraData("AdditionalData", "C# test: Additional data");

try
{
byte[] binaryData = sigObj.RenderBitmap("sign", 200, 150, "image/png", 0.5f, 0xff0000, 0xffffff, 10.0f, 10.0f, RBFlags.RenderOutputBinary | RBFlags.RenderColor32BPP) as byte[];
using (MemoryStream memStream = new MemoryStream(binaryData))
{
System.Drawing.Image newImage = System.Drawing.Image.FromStream(memStream);

sigImage = newImage;

// work with image here.
// You'll need to keep the MemoryStream open for
// as long as you want to work with your new image.
memStream.Dispose();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
图像作为位图存储在变量 newImage 中。
如何将该图像绑定(bind)到 sigImage 的图像控件?

最佳答案

System.Drawing.Image不是 Source 的合适类型Image 元素的属性。它是 WinForms,而不是 WPF。
使用System.Windows.Media.ImageSource反而

private ImageSource sigImage;

public ImageSource SigImage
{
get { return sigImage; }
set { sigImage = value; RaisePropertyChanged(); }
}
并将 BitmapImage 或 BitmapFrame 分配给直接从 MemoryStream 创建的属性。 BitmapCacheOption.OnLoad必须设置才能在解码位图后立即关闭流。
var bitmapImage = new BitmapImage();

using (var memStream = new MemoryStream(binaryData))
{
bitmapImage.BeginInit();
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
bitmapImage.StreamSource = memStream;
bitmapImage.EndInit();
}

bitmapImage.Freeze();
SigImage = bitmapImage;
绑定(bind)如下所示,提供了一个带有 SigImage 的类的实例。属性分配给 View 的 DataContext。
<Image Source="{Binding SigImage}"/>

由于 WPF 具有来自 string 的内置类型转换, Uribyte[]ImageSource ,您也可以将源属性声明为 byte[]
private byte[] sigImage;

public byte[] SigImage
{
get { return sigImage; }
set { sigImage = value; RaisePropertyChanged(); }
}
并分配一个值
SigImage = binaryData;
无需手动创建 BitmapImage 或 BitmapFrame,或更改绑定(bind)。

关于wpf - 在 View 模型 Wpf 中设置图像控制源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63811719/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com