0

画像に注釈または著作権素材を追加してから、変更されたビットマップを返す 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 での回答で問題ありません。

4

1 に答える 1

0

おそらく、変更されたビットマップを一時変数に割り当ててから、一時変数imageの内容で上書きしてみてください。例:

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

これらの行の間で、関数が元のオブジェクトではなく、変更されたオブジェクトを返していることを確認imageできます。temp_image

于 2010-03-19T21:07:57.643 に答える