Transcript TCanvas
TCanvas
BCB:TCanvasクラスでグラフィックを扱う。
TFormなどもプロパティとして持っている。
Tbitmap,TPaintBox,Timageなども持っている。
TCanvasのプロパティ
Pen :
線や点を描く時の、大きさや色を指定します。
TPenクラスの変数です。
Brush : 絵を塗りつぶす色や模様を指定します。
TBrushクラスの変数です。
Font : TCanvasに書くテキストのFont設定を指定します。
TFontクラスの変数です。
Pixels : TCanvasの個々のドット(点)の色を指定したり、
色を読み取るときにつかいます。
TColorクラスの二次元配列です。
PenPos : Penの現在位置を示します。
TCanvasのメソッド関数
void __fastcall MoveTo(int X, int Y);
線を描画するときの始点としてPenPosプロパティを設定します。
void __fastcall LineTo(int X, int Y);
PenPos プロパティで指定される位置から,座標(X, Y)まで線を
引きます。座標(X,Y)は色がつきません。
PenPos の値は(X, Y)に変更されます。
線は Penのプロパティ(色、太さ、パターン) で描画されます。
TCanvas
void __fastcall Rectangle(int X1, int Y1, int X2, int Y2);
プロパティPen を使って長方形を描画して,
その図形をプロパティ Brush で塗りつぶします。
Rectangle は,以下のどちらかの方法で長方形の座標を指定
します。
1.左上の角(X1, Y1)および右下の角(X2, Y2)を定義する座
標を 4 つ設定する
2.TRect 型を使う
TCanvas
void __fastcall Ellipse(int X1, int Y1, int X2, int Y2);
円や楕円を描画します。
Ellipse は,以下のいずれかの値を設定することによって外接
長方形を指定します。
1.左上の座標(X1, Y1)および右下の座標(X2, Y2)
2.TRect 値
外接長方形が正方形の場合は,円が描画されます。
楕円の外周は Pen の値を使って描画され,内部は Brush の
値を使って塗りつぶされます。
TCanvas
void __fastcall TextOut(int X, int Y, const AnsiString Text);
TextOut メソッドを呼び出すと,キャンバスに文字列を書き込
むことができます。文字列は現在の Font 値に応じて書き込
まれます。
TCanvas
TCanvasでは、
左上が(0,0)となり、右下に向かって座標値が増えていきます。
TCanvas
通常の座標系に合わせて描画するには・・・
1.
2.
座標の指定に表示する座標系の原点をOrgX,OrgYとし
て付け加える。
Y方向の変数は負号をつける。
TCanvas
通常の座標系に合わせて描画するには・・・
TCanvas
問題点:他の窓が重なったりすると、画像が消える。
TCanvas
対策:
Timage を使う。
•Tcanvasを内蔵
•グラフィックのペイントと更新は,自動的に処理される。
TImage
TcanvasのインスタンスCanvasを持っている。
Formに貼り付けて使う。
印刷
• BCB(Windows)では・・・
– Canvasに描画を行う -> Windowに描画
– オブジェクトTPritnerに描画する->印刷
TPrinterを使うには,
UnitファイルにPrinters.hppをインクルードする。
プリンタの設定
TPrintDialog
と
TPrinterSetupDialog
で
プリンタの設定を行います。
プリンタの設定
Tmenu,TPrintDialogとTPrinterSetupDialogを追加
プリンタの設定
メニューでプリンタの項目を追加
プリンタの設定
UnitファイルにPrinters.hppをインクルード
プリンタの設定
プリンタ設定、印刷のイベントを記述する。
プリンタの設定
TPrinterSetupDialogのメンバ関数Execute( )
Windowsマシンにつながっているプリンタの選択などの設定を行う。
設定はこのFormが実行されている間は有効です。
プリンタの設定
PrintDialogのメンバ関数Execute( )
ダイアログが表示され、使用するプリンタ、印刷枚数を設定。
印刷を実行する場合、Execute( )はtrueを返し、
キャンセルの時はfalseを返します。
印刷の方法
TPrinter *Prntr = Printer();
プリンタオブジェクトの準備を行う。
Prntr->BeginDoc();//印刷の開始
//ここに、実際に印刷する内容の描画を行う。
Prntr->EndDoc();//印刷の終了
今回の印刷は・・・
TcanvasのDraw関数を使用:
Draw( )関数は、TGraphicを引数として、
その内容をそのまま描画する関数です。
Image1のクラスTImageには、TImageの描画
内容を記録するPictureプロパティ内に
TGraphicクラスの変数Graphicを持っています。
これをDraw( )関数に渡してやることができます。