我有一个图像,我想GraphicsPath
根据构成图像的像素的某种阈值在图像上创建一个表示选择。例如,一种颜色范围算法考虑了颜色值接近给定颜色的像素。
我目前的问题不是选择像素的算法,而是GraphicsPath
我当前的代码变得过于复杂(点太多),因此创建它特别是进一步管理它的时间成本很高。
目前我只是简单地使用下面的代码(在这个例子中我只是取不透明的像素),我Rectangle
为每个取的像素添加一个。
BitmapData bitmapData = sourceBitmap.LockBits(new Rectangle(0, 0, sourceBitmap.Width, sourceBitmap.Height), ImageLockMode.ReadOnly, sourceBitmap.PixelFormat);
GraphicsPath gp = new GraphicsPath();
unsafe
{
byte* imagePointer = (byte*)bitmapData.Scan0;
for (int x = 0; x < bitmapData.Width; x++)
{
for (int y = 0; y < bitmapData.Height; y++)
{
if (imagePointer[3] != 0)
gp.AddRectangle(new Rectangle(x, y, 1, 1));
imagePointer += 4;
}
}
}
如何简化此过程或结果GraphicsPath
以获得更简单的路径,理想情况下只有轮廓?
编辑 然后我将使用路径:在屏幕上显示其轮廓(运行蚂蚁);将其用作其他图像的遮罩(取消路径中的内容);做命中测试(一个点是否在路径内)。举个例子: