C# 将形状放置在c中图像的前面#

C# 将形状放置在c中图像的前面#,c#,shape,C#,Shape,我有一张人体图片,我想用形状来定位病人的受伤部位。当用户单击按钮时,所有形状都将显示。现在我只测试一个形状 这是我的密码 private void button7_Click_4(object sender, EventArgs e) { Graphics g = this.CreateGraphics(); g.Clear(this.BackColor); Image img = Image.FromFile("C:\\Users\\H

我有一张人体图片,我想用形状来定位病人的受伤部位。当用户单击按钮时,所有形状都将显示。现在我只测试一个形状

这是我的密码

private void button7_Click_4(object sender, EventArgs e)
    {
        Graphics g = this.CreateGraphics();
        g.Clear(this.BackColor);

        Image img = Image.FromFile("C:\\Users\\HDAdmin\\Pictures\\humanbody\\effect2.png");
        g.DrawImage(img, 0, 0, img.Height, img.Width);
        g.Dispose();
    }
现在,形状显示在图像的后面。那么我想如何使形状出现在图片前面呢

有两个问题

1) 绘画应在绘画活动中进行。不要使用CreateGraphics,因为这只是一个临时图形

2) DrawImage的宽度和高度参数是相反的

3) 看起来您不是在绘制窗体上的PictureBox控件:

private Image img;

public Form1() {
  InitializeComponent();
  button1.Click += button1_Click;
  pictureBox1.Paint += pictureBox1_Paint;
}

void button1_Click(object sender, EventArgs e) {
  img = = Image.FromFile("C:\\Users\\HDAdmin\\Pictures\\humanbody\\effect2.png");
  pictureBox1.Invalidate();
}

void pictureBox1_Paint(object sender, PaintEventArgs e) {
  e.Graphics.Clear(pictureBox1.BackColor);

  if (img != null) {
    e.Graphics.DrawImage(img, 0, 0, img.Width, img.Height);

    //Draw test shape:
    e.Graphics.DrawRectangle(Pens.Red, new Rectangle(10, 10, 20, 60));
  }
}

我认为你们应该先得到人体图像的图形,然后在上面画出形状图像。诸如此类的事情:

Image img = Image.FromFile("C:\\Users\\HDAdmin\\Pictures\\humanbody\\effect2.png"); 

Graphics g = Graphics.FromImage ( img );

g.DrawImage(ShapeImage, 0, 0, 30, 30); // you can set your required x,y,width,height 

我想你可能先画形状,然后画图像。你能给我们看看你用来画形状的代码吗?我把你的代码复制粘贴到我的代码里。它仍然显示在图片后面的形状..我在这里出错了吗???@sarabrown如果它不工作,那么您运行的代码我们看不到。最突出的一点是,您的代码似乎是在表单本身上绘制的,在表单中显然也有按钮。通常,您应该有一个面板或PictureBox控件来显示此图像。im使用工具箱中的组件,我只将任何组件拖动到希望使用的位置。图片来自图片框,放在面板内。我也会编辑我的帖子以获得更好的浏览效果。希望有帮助。对不起。我的互联网突然变慢了,我想我已经点击了提交按钮。我希望这张图片能给出清晰的视图。@sarabrown我更新了我的示例。绘制需要在PictureBox控件上进行,而不是在窗体上,这是您的代码正在执行的操作。它不会工作得很好。它显示在图片的后面。你有没有其他的解决办法,或者我做的方式不对?