Заполнить функцию в PictureBox в Visual Studio C#? - PullRequest
1 голос
/ 24 марта 2020

Существует ли какая-либо функция для автоматического заполнения одного из этих штатов в Бразилии определенным цветом, но без соседнего штата? Так, в качестве примера, у меня есть координаты 150x и 200y для Picturebox в c# Visual Studio. И я хочу, чтобы с этой точки все серое, что окружает эту точку, должно было стать синим, но оно должно остановиться на белой границе. Есть ли какая-либо функция, чтобы сделать это, не объявляя определенные c полигонов для каждого состояния? Спасибо за все ответы!

Brazil States

1 Ответ

1 голос
/ 25 марта 2020

Здесь у меня есть идея, что вы можете использовать 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);
    }
}

Результат теста,

enter image description here

...