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 server 2008 SP1)上想要的结果:

在此处输入图像描述

第二台机器上不需要的结果(Windows server 2008 SP2):

在此处输入图像描述

4

1 回答 1

3

您的调用行为未定义,因为源位图和目标位图相同。发生的事情将取决于图形驱动程序。这就像当源缓冲区和目标缓冲区相同时,您尝试使用 memcpy 而不是 memmove。

于 2013-11-01T15:16:25.407 回答