位图操作作为引用对象

时间:2010-03-19 20:26:29

标签: pass-by-reference watermark bitmapimage

我正在使用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中的答案都很好。

1 个答案:

答案 0 :(得分:0)

也许尝试将修改后的位图分配给临时变量,然后用临时变量的内容覆盖image。例如:

temp_image = New MarkCopyrightImage(image).MarkImage()
image = temp_image

在这些行之间,您可以检查imagetemp_image以确保您的函数返回修改后的对象而不是原始对象。