3

使用 GDI+ 并排绘制两个矩形,如果我应用比例因子来产生缩放效果,则在某些比例因子的矩形之间会出现伪影。

我有以下代码来显示问题:

var scale = (float)(numericUpDown1.Value)/100.0f;

var g = e.Graphics;
var b = new SolidBrush(Color.Red);
var rect1 = new Rectangle(10, 40, 100, 100);
var rect2 = new Rectangle(110, 40, 100, 100);

g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;

g.ScaleTransform(scale, scale);

g.FillRectangle(b, rect1);
g.FillRectangle(b, rect2);

使用此代码并将“numericUpDown1”设置为 100,我得到以下信息:

无缩放

将比例设置为 125,我得到矩形之间的一条线:

缩放 125%

缩放到几乎任何不是 10 的倍数的值都会产生这个问题。近看就行了,好像有一些抗锯齿的效果。我无法删除抗锯齿,因为在我的真实场景中,矩形可能是具有非直线的多边形。

放大工件

我尝试了很多东西,比如切换 PixelOffsetMode、CompositingQuality、Antialiasing,但没有任何效果。我的目标是拥有与 MS PowerPoint 相同质量的东西。

4

0 回答 0