在Visual Studio C#中在PictureBox中填写Function?
Fill in Function in PictureBox in Visual Studio C#?
有没有什么功能可以用某种颜色自动填充巴西的这些州之一,但没有他们的邻居州?因此,作为示例,我在 c# Visual Studio 中为图片框设置了坐标 150x 和 200y。我希望从这一点开始,围绕这一点的所有灰色都应该变成蓝色,但它应该停在白色边界处。是否有任何功能可以做到这一点,而无需为每个州声明特定的多边形?感谢所有回答!
这里我有个想法,大家可以用recursion
遍历像素点,修改颜色。
Bitmap bmp;
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
int x = e.X;
int y = e.Y;
bmp = (Bitmap)pictureBox1.Image;
ModifyMap(x, y);
pictureBox1.Image = bmp;
}
// Recursion
private void ModifyMap(int x, int y)
{
// the color info of gray part "Color [A=255, R=153, G=153, B=153]"
if (bmp.GetPixel(x, y).ToString() == "Color [A=255, R=153, G=153, B=153]")
{
bmp.SetPixel(x, y, Color.Blue);
ModifyMap(x + 1, y);
ModifyMap(x - 1, y);
ModifyMap(x, y + 1);
ModifyMap(x, y - 1);
}
}
测试结果,
有没有什么功能可以用某种颜色自动填充巴西的这些州之一,但没有他们的邻居州?因此,作为示例,我在 c# Visual Studio 中为图片框设置了坐标 150x 和 200y。我希望从这一点开始,围绕这一点的所有灰色都应该变成蓝色,但它应该停在白色边界处。是否有任何功能可以做到这一点,而无需为每个州声明特定的多边形?感谢所有回答!
这里我有个想法,大家可以用recursion
遍历像素点,修改颜色。
Bitmap bmp;
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
int x = e.X;
int y = e.Y;
bmp = (Bitmap)pictureBox1.Image;
ModifyMap(x, y);
pictureBox1.Image = bmp;
}
// Recursion
private void ModifyMap(int x, int y)
{
// the color info of gray part "Color [A=255, R=153, G=153, B=153]"
if (bmp.GetPixel(x, y).ToString() == "Color [A=255, R=153, G=153, B=153]")
{
bmp.SetPixel(x, y, Color.Blue);
ModifyMap(x + 1, y);
ModifyMap(x - 1, y);
ModifyMap(x, y + 1);
ModifyMap(x, y - 1);
}
}
测试结果,