我需要将生成的一些位图复制到较大的对象(例如picturebox(,所以我正在使用drawimage做到这一点,但是结果重复是模糊的,好像gdi 在试图尝试缩放图像,除了两个页面都相同,DPI分辨率是相同的,源矩形和目标矩形是相同的宽度和高度。
如果源X和目标X,Y点为0,0,则绘制符号效果很好,但是如果我将目标X.Y位置更改为其他任何东西(即使宽度和高度相同(,则结果是模糊的。p>我已经尝试了每一个绘图超载,结果始终相同。除非原点和目的地x,y位置相同,否则图像将模糊。
private void DrawStringVerticalStackingV4(string text, Graphics g, SizeF sizeMaxArea, PointF startPoint, Font font, Brush brush, StringFormat sf)
{
Bitmap bmp = new Bitmap(100, 10, g);
Graphics gBmp = Graphics.FromImage(bmp);
gBmp.PageUnit = g.PageUnit;
// Some stuff being drawn...
// Draw the bitmap on the original canvas
RectangleF destRect = new RectangleF(startPoint.X, startPoint.Y, gBmp.VisibleClipBounds.Width, gBmp.VisibleClipBounds.Height);
RectangleF srcRect = new RectangleF(0, 0, gBmp.VisibleClipBounds.Width, gBmp.VisibleClipBounds.Height);
g.DrawImage(bmp, destRect, srcRect, g.PageUnit);
// Housekeeping
}
除非毁灭和SRCret具有相同的x和y,否则结果却略微扭曲了,就像GDI 试图扩展图像一样。
进一步进行此操作后,汉斯·普(Hans Passant(是正确的。设置Graphics.interpolationmode到最近的伯尔堡工作完美。
此问题仅在您的pageunit除了像素之外其他任何东西时才发生。我的小脑将其视为逻辑错误,因为源矩形和目标矩形都具有完全相同的宽度和高度。唯一不同的是目的地X和Y位置。不应该发生失真。
非常感谢您的帮助!