【发布时间】:2019-06-08 00:04:19
【问题描述】:
我的应用程序中有两个 winform。其中一个表格有一个图片框,里面有一个 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();
}
然后从主窗体上的更新方法(现在单击按钮进行测试)我在地图窗体上调用此方法。该方法被调用,但圆圈没有出现在表单上。我已经尝试过 Refresh 和 Invalidate 两种方法似乎都没有在图像上绘制圆圈。
我已经多年没有进行 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);
}
一旦我在另一个表单上绘制了圆圈,然后我将从 click 事件中删除代码并将其移动到另一个对位置进行更新的事件。如果可能的话,我想在有这个人名字的圆圈旁边贴一个标签。现在这是一个概念证明,我只需要帮助在表格上画圆圈即可。
谢谢。
【问题讨论】: