WinForms GDI + События Полигона и панели пользовательской формы

Я преобразовал граничные полигоны почтового индекса для указания на данные (точка [] для каждого полигона) из Файлов форм GIS.

Я желаю показать это в c# приложении форм окон.

Мне удалось показать это использование System.Drawing (GDI +) DrawPolygon () метод.

Graphics g = this.CreateGraphics();
Pen pen = new Pen(Color.Black);
Brush brush = new SolidBrush(Color.FromArgb(255,255,o));

PointF[] ptr = { point data here };

g.FillPolygon(brush, ptr);
g.DrawPolygon(pen, ptr);

Действительно ли возможно добавить события к оттянутому полигону? Раз так, как я делаю это для отдельных полигонов. Например, нажмите на полигон почтового индекса, и messagebox показывает информацию о почтовом индексе.

Во-вторых, был бы это быть легче сделать пользовательский элемент управления, наследовавший панель winforms. Существует ли способ сформировать границу управления панелью winforms с помощью ряда точек?

Объекты почтового индекса сериализируются и хранятся в файловой системе.

1
задан Darbio 14 May 2010 в 01:59
поделиться

1 ответ

Использование элементов управления нестандартной формы потребует некоторой настройки, но когда вы все сделаете правильно, Windows позаботится о проверке попадания за вас.

Если вы решите использовать подход GDI +, вы захотите нарисовать многоугольники в обработчике событий Paint вашей формы и обработать событие MouseDown , чтобы вычислить в какой многоугольник попадают координаты.

«Нарисованный» многоугольник больше не является объектом, поэтому нет возможности добавлять к нему события. Однако вы можете создать класс Polygon с помощью метода void PaintMe (Graphics g) и метода bool HitTest (int x, int y) , чтобы у вас была вся логика в одном классе.

2
ответ дан 3 September 2019 в 00:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: