C# 填充多边形的边
C# fill out side of a polygon
在 c# 中,我可以在位图中填充多边形,如下所示。
using (Graphics g = Graphics.FromImage(bitmap))
{
g.FillPolygon(colorBrush, points.ToArray());
}
FillPolygon
方法填充多边形内部的像素,此时白色像素和黑色像素保持不变。
现在,我想要这个操作的反面。这意味着,外部像素将被填充,而内部像素将保持不变。在这种情况下,黑色像素是外部像素。
编辑
我需要这个,因为比方说,我有一个对象的二进制图像。我需要剪掉背景颜色(黑色)的像素,白色多边形内的像素将保持不变。
您可以使用 GraphicsPath
来执行此操作,如下所示:
- 将多边形添加到路径中。
- 在包含您想要"invert"的区域的路径中添加一个矩形。
- 使用
Graphics.FillPath()
填写路径
对于示例程序,创建一个默认的 Windows 表单应用程序并覆盖 OnPaint()
,如下所示:
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
var points = new []
{
new PointF(150, 250),
new PointF( 50, 500),
new PointF(250, 400),
new PointF(300, 100),
new PointF(500, 500),
new PointF(500, 50),
};
using (var path = new GraphicsPath())
{
path.AddPolygon(points);
// Uncomment this to invert:
// p.AddRectangle(this.ClientRectangle);
using (var brush = new SolidBrush(Color.Black))
{
e.Graphics.FillPath(brush, path);
}
}
}
如果您 运行 那个(并调整 window 的大小),您会看到白色 window.
里面有一个黑色的形状
取消注释指定的行和 运行 程序,您将看到黑色 window 中的白色形状(即添加 ClientRectangle
反转它)。
在 c# 中,我可以在位图中填充多边形,如下所示。
using (Graphics g = Graphics.FromImage(bitmap))
{
g.FillPolygon(colorBrush, points.ToArray());
}
FillPolygon
方法填充多边形内部的像素,此时白色像素和黑色像素保持不变。
现在,我想要这个操作的反面。这意味着,外部像素将被填充,而内部像素将保持不变。在这种情况下,黑色像素是外部像素。
编辑 我需要这个,因为比方说,我有一个对象的二进制图像。我需要剪掉背景颜色(黑色)的像素,白色多边形内的像素将保持不变。
您可以使用 GraphicsPath
来执行此操作,如下所示:
- 将多边形添加到路径中。
- 在包含您想要"invert"的区域的路径中添加一个矩形。
- 使用
Graphics.FillPath()
填写路径
对于示例程序,创建一个默认的 Windows 表单应用程序并覆盖 OnPaint()
,如下所示:
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
var points = new []
{
new PointF(150, 250),
new PointF( 50, 500),
new PointF(250, 400),
new PointF(300, 100),
new PointF(500, 500),
new PointF(500, 50),
};
using (var path = new GraphicsPath())
{
path.AddPolygon(points);
// Uncomment this to invert:
// p.AddRectangle(this.ClientRectangle);
using (var brush = new SolidBrush(Color.Black))
{
e.Graphics.FillPath(brush, path);
}
}
}
如果您 运行 那个(并调整 window 的大小),您会看到白色 window.
里面有一个黑色的形状取消注释指定的行和 运行 程序,您将看到黑色 window 中的白色形状(即添加 ClientRectangle
反转它)。