В моем приложении две формы win. В одной из форм есть изображение с загруженным jpg нашего плана здания. Основная форма имеет код, который делает распознавание лиц, идентифицирующих людей, приходящих в определенные области. Меня попросили изменить эту программу, чтобы показать местоположение определенного лица на плане здания. У меня есть база данных, в которой есть все координаты X, Y местоположений, которые должны отображаться на изображение плана здания. Я осмотрелся вокруг и попытался найти какой-нибудь код, который нарисует круг на карте в координатах X, Y, когда человек продвигается по областям здания, стирая все существующие круги и обновляя этот новый. Поэтому на форме карты я вставил следующий код:
public void DrawCircle(int x, int y)
{
Graphics gf = pictureBox1.CreateGraphics();
gf.DrawEllipse(new Pen(Color.Red), new Rectangle(x, y, 400, 400));
pictureBox1.Refresh();
}
Затем из метода обновления (сейчас нажатие кнопки для тестирования) в главной форме я вызываю этот метод в форме карты. Метод вызывается, но круг не отображается в форме. Я пробовал и Обновить, и Неправильный, и ни один из методов не рисует круг на изображении.
Я не занимался разработкой winforms в течение многих лет, так что я уверен, что где-то не хватает сантехники. Вот код на главной форме:
LocationMap map = new LocationMap();
public Form1()
{
InitializeComponent();
//set up signalR
UserName = "MovementHub1";
ConnectAsync();
//show the map screen
map.Show();
map.WindowState = FormWindowState.Maximized;
...
Затем в событии щелчка (для тестирования прямо сейчас) у меня есть этот код:
private void button2_Click(object sender, EventArgs e)
{
map.DrawCircle(340, 258);
}
Как только я получу круг, нарисованный в другой форме, я удалю код из события щелчка и перенесу его в другое событие, которое выполняет обновление местоположения. Если это возможно, я хотел бы поставить ярлык рядом с именем человека. Сейчас это подтверждение концепции, мне просто нужна помощь, чтобы начать круг с формы.
Спасибо.