在位图上使用SetPixel时如何更改像素大小?

时间:2013-12-27 23:05:35

标签: c# winforms

newbitmap.SetPixel((int)clouds1[x].X, (int)clouds1[x].Y, Color.Red);

我将像素设置为红色的新位图。 在form1中,我在pictureBox3中显示了newbitmap:

pictureBox3.Image = CloudEnteringAlert.newbitmap;

但像素非常小,几乎无法在pictureBox3上看到。 如何让像素更大?

1 个答案:

答案 0 :(得分:1)

你不能,但你可以画一个圆圈。

using(var g = Graphics.FromImage(newbitmap)) {
    g.FillEllipse(Brushes.Red, (int)clouds1[x].X - radius, 
                               (int)clouds1[x].Y - radius, 2 * radius, 2 * radius);
}

我创建了一个扩展方法,简化了绘制圆(这里有浮点坐标):

public static void FillCircle(this Graphics g, Brush brush,
                              PointF center, float radius)
{
    g.FillEllipse(brush, center.X - radius, center.Y - radius,
                         radius + radius, radius + radius);
}

如果您的云为PoinF,则可以这样称呼:

using(var g = Graphics.FromImage(newbitmap)) {
    g.FillCircle(Brushes.Red, clouds1[x], radius);
}

如果没有,请相应地调整扩展方法。将此类扩展方法放在静态类中。

为了获得流畅的圆圈,您可以使用抗锯齿。在绘制圆圈之前,将SmoothingMode对象的Graphics设置为所需的值:

g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;