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

时间:2012-09-26 01:47:51

标签: 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\\HDAdmin\\Pictures\\humanbody\\effect2.png");
        g.DrawImage(img, 0, 0, img.Height, img.Width);
        g.Dispose();
    }

现在,形状出现在图像的背面。那我怎么想让形状出现在画面前?

enter image description here

2 个答案:

答案 0 :(得分:4)

一些问题。

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));
  }
}

答案 1 :(得分:0)

我认为你应该首先获得人体图像的图形,然后在其上绘制形状图像。有点像这样:

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