0

pictureBox にいくつかの四角形を作成しましたが、他の四角形には影響を与えずに、別のボタンをクリックしてそのうちの 1 つを削除したいと考えています。ptureBox1->Refresh() を試しましたが、すべての四角形が削除されました。そのうちの 1 つを削除するだけです。

どうすればできますか?コードは次のとおりです。

private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) {
{
    int x;
    int y;
    int length;
    int width;
    Color b; 

    Graphics^ g = pictureBox1->CreateGraphics();

    b = Color::FromArgb(Convert::ToInt32(textBox7->Text),Convert::ToInt32(textBox8->Text),Convert::ToInt32(textBox9->Text));
    Pen^ myPen = gcnew Pen(b);
    myPen->Width = 2.0F;

    x = Convert::ToInt32(textBox10->Text);
    y = Convert::ToInt32(textBox13->Text);
    length = Convert::ToInt32(textBox11->Text);
    width = Convert::ToInt32(textBox12->Text);

    //Rectangle 
    hh = Rectangle(x, y, length, width);    
    g->DrawRectangle(myPen,hh);

}

4

1 に答える 1

1

描画する長方形のリストを保持する必要があります。削除するには、描画を停止するだけです。

例:

std::vector<Rectangle> rectangles;

void YourButtonClick(...){
  // do your stuff
  hh = Rectangle(x, y, length, width);
  rectangles.push_back(hh);

  draw();
}

void draw()
{
  pictureBox1->Refresh() 
  Graphics^ g = pictureBox1->CreateGraphics();
  for(int i = 0, max = rectangles.size(); i<max; i++){
    g->DrawRectangle(pen, rectangles[i]);
  }
}

void deleteRectangle(int index){
  Rectangle* rect = rectangles[index];
  rectangles.erase(rectangles.begin()+index);

  draw();
}
于 2013-05-02T03:32:12.530 に答える