我有一张显示人体的图片,我想用形状来定位病人的伤情。当用户点击按钮时,所有形状都会显示出来。现在我只用一种形状测试。
这是我的代码。
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();
}
现在,形状出现在图像的背面。那我怎么想让形状出现在画面前?
答案 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