图像上的数据绑定,但我需要一个byteArray
本文关键字:byteArray 一个 数据绑定 图像 | 更新日期: 2023-09-27 18:08:40
我正在使用Winforms, CAB, c#和inffragistics。我正试图与MVP与我的后端连接WCF工作。
在我的演示器中,我有我的模型,我们叫它AgreementDataContract。这个数据契约有一堆属性: ...
[DataMember]
public byte[] PVImage { get; set; }
[DataMember]
public byte[] OntwerpImage { get; set; }
[DataMember]
public Decimal WattpiekPrijs { get; set; }
...
您会注意到图像被存储为字节[]。我将这些属性绑定到我的用户控件上的控件:
BindingHelper.BindField(_ultraPictureBoxPV, "Image", _bindingSource, "PVImage");
BindingHelper.BindField(_ultraPictureBoxOntwerp, "Image", _bindingSource, "OntwerpImage");
BindingHelper只是添加一个BindingContext到指定的controller (control.BindingContext.Add(…))。
无论如何,问题是:数据合约包含图像作为一个字节数组,而我绑定到一个图像。这将导致属性保持"null",因为他不想将图像放入byteArray;)
我已经尝试过了,但我认为我有两种可能性:
我可以尝试使用一种转换器吗?因此,当图像被插入时,它将作为byteArray而不是图像传递给模型(=databinding)。
我可以删除绑定并在表单"提交"时创建一个事件,并将图像转换为byteArray并填充模型。(=没有绑定)
TL,博士;你知道一种方法来"转换"图像到字节数组,当它被传递到数据绑定?
我希望我的问题是清楚的!谢谢你的帮助我会添加一个类型为Image的新属性,它将被绑定到你的UltraPictureBox控件。添加两个知道如何在任意方向上转换的方法。
[DataMember]
public Image OntwerpImageImage
{
get { return ConvertByteArrayToImage(OntwerpImage); }
set { OntwerpImage = ConvertImageToByteArray(value); }
}
//[DataMember]
public byte[] OntwerpImage { get; set; }
public Image ConvertByteArrayToImage(Byte[] bytes)
{
var memoryStream = new MemoryStream(bytes);
var returnImage = Image.FromStream(memoryStream);
return returnImage;
}
public Byte[] ConvertImageToByteArray(Image image)
{
var memoryStream = new MemoryStream();
image.Save(memoryStream, ImageFormat.Jpeg);
return memoryStream.ToArray();
}