如何在图像框上添加标记?

时间:2017-08-31 08:40:42

标签: c#

public Form1()
{
    InitializeComponent();
    this.imgRoom.Click += new EventHandler(this.pictureBox1_Click);
}

private void pictureBox1_Click(object sender, EventArgs e)
{
    var label1 = new LabelControl();
    label1.Location = MousePosition;
    label1.BackColor = Color.Red;
    label1.Parent = imgRoom;
    label1.Text = "Point";
    imgRoom.Controls.Add(label1);
}

enter image description here

当我点击你可以在附加屏幕上看到的位置时,点出现在另一个地方。如何解决这个问题呢?

2 个答案:

答案 0 :(得分:5)

MousePosition位于屏幕坐标中。您需要将其转换为客户端坐标。

private void pictureBox1_Click(object sender, EventArgs e)
    {
        var label1 = new LabelControl();
        label1.Location = imgRoom.PointToClient(MousePosition);  // changed here.
        label1.BackColor = Color.Red;
        label1.Parent = imgRoom;
        label1.Text = "Point";
        imgRoom.Controls.Add(label1);
    }

答案 1 :(得分:1)

看起来你必须相对于表格而不是图片框的鼠标位置。尝试使用pictureBox' mouseClick'事件然后使用mouseEventArgs' e.Location'用于设置标签位置属性的属性。

见 - (https://msdn.microsoft.com/en-us/library/system.windows.forms.control.mouseclick(v=vs.110).aspx