2012年

9月

10日

06)矩形の内部を塗りつぶす:問題2

問題2
矩形のわくがある。内部を全部、青色で塗りつぶすと矩形が消える。
(BitmapDataをどう扱うのかのチェック)

 

解答案(ドロー部分はいいかげんです):
(設定)
Form1(ClientWidth:400,ClientHeight:400)<-- Client..の方がグッドです。
Image1(Width:100,Height:100)
Timer1(全部default)

 

(プログラム)
__fastcall TForm1::TForm1(TComponent* Owner)
 : TForm(Owner)
{
 Image1->Canvas->Rectangle(0,0,100,100);
 Image1->Canvas->Pen->Color = TColor(0xFF0000);
 Image1->Canvas->Pen->Width = 20;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
 int ch = 0;
 for(int x=1; x<Image1->Width-1; x++){
  for(int y=1; y<Image1->Height-1; y++){
   if(Image1->Canvas->Pixels[x][y] == TColor(0xFF0000))
    continue;
   else{
    ch = 999;
    break;
   }
  }
 }
 if(!ch) Image1->Visible = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
{
 Image1->Canvas->MoveTo(X, Y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
{
 Image1->Canvas->LineTo(X, Y);
}

 

疑問点:

1)Rectangleのわくの線を太くする方法

2)この問題を矩形でなく、任意の閉曲線でできるのかどうか?