2012年

9月

10日

05)XE3で再スタートします:問題1

夏前にインストールしたC++ Builder XE2体験版は1週間ほどで使えなくなってしまったため、中断となってしまいました(アンインストールして別のPCにインストールするとだめなようです)。先日、XE3が出ましたので、気分あらたに再スタートします。成果だけをつづっていくのは多少ハードですので、作成した問題と、出てきた疑問点を書いていきます。C++ Builderの使い手の皆さん、教えて下さい!

 

問題1(基礎)

マウスダウンの状態で、線をドローすると、同時に左右対称の線も表示される。

(Spriteに相当するものは何か、というのがテーマです)

 

解答案:

(設定)

Form1(Width:400,Height:400)
PaintBox1(Width:384,Height:362,Left:0,Top:0)
PaintBox2(Width:384,Height:362,Left:0,Top:0)

 

(プログラム) 

TForm1 *Form1;
Boolean dFlag = false;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
 : TForm(Owner)
{
 PaintBox1->Canvas->Pen->Width = 10;
 PaintBox1->Canvas->Pen->Color = TColor(0xFF0000);
 PaintBox2->Canvas->Pen->Width = 10;
 PaintBox2->Canvas->Pen->Color = TColor(0x0000FF);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PaintBox2MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
{
 dFlag = true;
 PaintBox1->Canvas->MoveTo(X, Y);
 PaintBox2->Canvas->MoveTo(384-X, Y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PaintBox2MouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
{
 if(!dFlag) return;
 PaintBox1->Canvas->LineTo(X, Y);
 PaintBox2->Canvas->LineTo(384-X, Y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PaintBox2MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
{
 dFlag = false;
}

 

疑問点:

1)removeEventListenerに相当するものは何でしょうか?

2)PaintBox1とPaintBox2の重なり順を変える方法