我正在使用Bitmap对象,我在图像中添加注释或版权材料,然后返回修改后的位图。我的问题是,当Bitmap沿着链移动时,Bitmap不会保留对它所做的更改。我将它视为一个引用类型,并假设它传递给每个类,它将携带对它的更改。我已经验证了MarkImage()类中的代码确实起作用,但是最后一个被调用的是具有更改的代码。
Public Shared Function GetImage(ByVal imageDef As IImageDefinition) As Bitmap
Dim image As Bitmap = Drawing.Image.FromFile(imageDef.Path)
If Not imageDef.Authorization.IsAllowed(AuthKeys.CanViewWithoutCopyright) Then
image = New MarkCopyrightImage(image).MarkImage()
End If
If Not imageDef.Authorization.IsAllowed(AuthKeys.CanViewWithoutAnnotations) Then
image = New MarkAnnotateImage(image).MarkImage()
End If
Return image
End Function
如何更改位图对象,然后将该对象传递给另一个类,同时保持更改?
C#或VB中的答案都很好。
答案 0 :(得分:0)
也许尝试将修改后的位图分配给临时变量,然后用临时变量的内容覆盖image
。例如:
temp_image = New MarkCopyrightImage(image).MarkImage()
image = temp_image
在这些行之间,您可以检查image
和temp_image
以确保您的函数返回修改后的对象而不是原始对象。