0

次の System.Drawing.Graphics メソッドのオーバーロードを使用して同様の問題が発生した人はいますか?

public void DrawImage(Image image,
                      Rectangle destRect,
                      Rectangle srcRect,
                      GraphicsUnit srcUnit)

次のメソッドを使用して、Visual Studio コンソール アプリケーションを作成しました。

using (var g = Graphics.FromImage(image)) {
    g.DrawImage(image,
                new Rectangle(new Point(50, 50), new Size(20, 20)),
                new Rectangle(new Point(0, 0), new Size(20, 20)), 
                GraphicsUnit.Pixel);
}

.NET フレームワークのバージョン: v4.0.30319

元の画像:

ここに画像の説明を入力

コンソール アプリはさまざまなマシンで実行され、さまざまな結果が得られました。

最初のマシン (Windows サーバー 2008 SP1) で必要な結果:

ここに画像の説明を入力

2 台目のマシンでの望ましくない結果 (Windows サーバー 2008 SP2):

ここに画像の説明を入力

4

1 に答える 1

3

The behavior of your call is undefined, as the source and target bitmaps are the same. It will be graphics-driver-dependent what happens. This is as if you were trying to use memcpy instead of memmove when the source and target buffers are the same.

于 2013-11-01T15:16:25.407 に答える