4

人体を示す写真が 1 枚あり、形状を使用して患者の怪我の位置を特定したいと考えています。ユーザーがボタンをクリックすると、すべての形状が表示されます。現在、1 つの形状のみでテストしています。

これが私のコードです。

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

現在、形状は画像の後ろに表示されます。では、どのように形を写真の前に表示したいのですか?

ここに画像の説明を入力

4

2 に答える 2

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));
  }
}
于 2012-09-26T02:05:12.267 に答える
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 
于 2012-09-26T04:53:40.810 に答える