在图片框中添加可点击的框c#

时间:2017-11-15 03:56:11

标签: c# picturebox rectangles regions

所以我有一个图片框,我需要绘制矩形或声明区域或,以便用户可以点击图片的一个区域,它做了一些事情。我已经搜索并搜索了这个并得出结论,我要么需要矩形来定位,要么需要一个区域。我真的不希望在地图上显示一个可见的项目,如果这简化了它,只是一个供用户点击的地方并且它会做一个动作。

除此之外,地图将会改变,当它发生时,我需要将框更改为其他位置。以下是我提出的,它不起作用。我也对其他方式持开放态度。

    public Rectangle Location1;
    public Rectangle Location2;

    public String CharacterLocation == "WorldMap";

private void GenerateRegions ()
    {
        Pen blankPen = new Pen(Color.Transparent, 3);

        if (CharacterLocation == "WorldMap")
        {
            Rectangle[] rects =
        {
             Location1 = new Rectangle(100, 200, 250,  50),
             Location2 = new Rectangle(50, 100, 250,  50)

        };

            MapBox.CreateGraphics().DrawRectangles(blankPen, rects);
        }
    }
   private void MapBox_MouseDown(object sender, MouseEventArgs e)
    {
        if (Location1.Contains(e.Location))
       {

       }
   }

1 个答案:

答案 0 :(得分:0)

好的,所以这就是我的理由。它在错误的位置绘制矩形,但我认为原因是图像被缩放。

       private void GenerateRegions ()
    {

        MapBox.Invalidate();
        Pen blankPen = new Pen(Color.Transparent, 3);
        Console.WriteLine(CharacterLocation);

        if (CharacterLocation == "WorldMap")
        {
            Console.WriteLine(CharacterLocation);

            Rectangle[] rects =
        {
             Location1 = new Rectangle(64, 25, 20,  20),
             Location2 = new Rectangle(68, 70, 20,  20)

        };

            using (var g = Graphics.FromImage(MapBox.Image))
            {
                g.DrawRectangles(blankPen, rects);
                MapBox.Refresh();
            }
        }
   private void MapBox_MouseDown(object sender, MouseEventArgs e)
    {
        if (Location1.Contains(e.Location))
       {
            arealbl.Text = "You clicked it 1";
        }
        if (Location2.Contains(e.Location))
        {
            arealbl.Text = "You clicked it 2";
        }

}