2010-03-19 17 views
0

我正在使用一个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

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

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

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