Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DrawImage使图像模糊,尽管源/目标尺寸相同_C#_.net_Gdi+_Drawimage - Fatal编程技术网

C# DrawImage使图像模糊,尽管源/目标尺寸相同

C# DrawImage使图像模糊,尽管源/目标尺寸相同,c#,.net,gdi+,drawimage,C#,.net,Gdi+,Drawimage,我需要将生成的一个小位图复制到一个更大的对象(比如PictureBox),所以我使用DrawImage进行复制,但是复制的结果很模糊,就像GDI+试图缩放图像一样,除了两个页面单位相同、DPI分辨率相同、源矩形和目标矩形的宽度和高度相同之外 如果源和目标X、Y点为0,0,则DrawImage工作正常,但如果我将目标X、Y位置更改为其他位置(即使宽度和高度相同),则结果模糊 我尝试了DrawImage的所有重载,结果总是一样的。除非原点和目标X、Y位置相同,否则图像将模糊 private void

我需要将生成的一个小位图复制到一个更大的对象(比如PictureBox),所以我使用DrawImage进行复制,但是复制的结果很模糊,就像GDI+试图缩放图像一样,除了两个页面单位相同、DPI分辨率相同、源矩形和目标矩形的宽度和高度相同之外

如果源和目标X、Y点为0,0,则DrawImage工作正常,但如果我将目标X、Y位置更改为其他位置(即使宽度和高度相同),则结果模糊

我尝试了DrawImage的所有重载,结果总是一样的。除非原点和目标X、Y位置相同,否则图像将模糊

private void DrawStringVerticalStackingV4(字符串文本、图形g、SizeF sizeMaxArea、PointF startPoint、字体、画笔、StringFormat sf)
{
位图bmp=新位图(100,10,g);
Graphics gBmp=Graphics.FromImage(bmp);
gBmp.PageUnit=g.PageUnit;
//正在画一些东西。。。
//在原始画布上绘制位图
矩形F destRect=新矩形F(startPoint.X,startPoint.Y,gBmp.VisibleClipBounds.Width,gBmp.VisibleClipBounds.Height);
RectangleF srcRect=新矩形F(0,0,gBmp.VisibleClipBounds.Width,gBmp.VisibleClipBounds.Height);
g、 DrawImage(bmp、destRect、srcRect、g.PageUnit);
//内务管理
}

除非destRect和srcRect具有相同的X和Y,否则结果会稍微失真,就像GDI+试图缩放图像一样。

进一步研究后,Hans Passant是正确的。将Graphics.InterpolationMode设置为Nearest Neighbourt效果很好

只有当页面单位不是像素时,才会出现此问题。我的小脑袋认为这是一个逻辑错误,因为源矩形和目标矩形的宽度和高度都完全相同。唯一不同的是目的地的X和Y位置。不应该发生失真


非常感谢你的帮助

修改Graphics.InterpolationMode。当您拾取最近的邻居时,放大一个小位图时,只会得到锐利的边缘。PixelOffsetMode也可以用于极端放大。现在是哪一种:将我生成的小位图复制到更大的对象,或者分辨率相同,源矩形和目标矩形的宽度和高度相同??Semms自相矛盾。你想看一看@TaW为模棱两可而道歉。目标“canvas”是一个更大的对象,但是根据上面的源代码,正在绘制源代码的区域是完全相同的。destRect和srcRect的宽度和高度相同。