らくがき帳プログラムを作ってみました。
マウスでドラッグした通りに線を描くというプログラムです。
「ナッキーのTurbo Delphiはじめて奮戦記」ページを参考にさせていただきました。
とてもわかりやすくて、その通りにやったらできました。
色を塗ったり、消しゴムを使ったり、ファイルとして保存できれば、さらに進化するんですけど・・・
まだそこまでは。
準備
フォームにTScrollBoxコンポーネントを貼り付けます。ツールパレットの「Additional」の中にあります。
プロパティは、Nameを「sbxDraw」、Alignを「alClient」、Colorを「clWhite」に設定します。
alClientは、「余った領域を占拠する」という意味らしいです。これを設定すると、TScrollBoxがいっぱに伸びます。
つぎに、ScrollBoxの上に、TPaintboxコンポーネントを貼り付けます。ツールパレットの「System」の中にあります。
オブジェクトプロパティで、Nameを設定し、Height=480、Width=640、Left=0、Top=0 を設定します。
次に、TXPManifestコンポーネントを貼り付けます。ツールパレットの「Win32」の中にあります。
実行結果
プログラム
unit rakugakityou; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, XPMan, ExtCtrls; type TfrmMain = class(TForm) sbxDraw: TScrollBox; pbxDraw: TPaintBox; XPManifest1: TXPManifest; procedure FormCreate(Sender: TObject); procedure pbxDrawMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); private { Private declarations } //グローバス変数を宣言 preX : Integer; preY : Integer; public { Public declarations } end; var frmMain: TfrmMain; implementation {$R *.dfm} procedure TfrmMain.FormCreate(Sender: TObject); begin //グローバル変数の初期化 preX := -1; preY := -1; end; procedure TfrmMain.pbxDrawMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if GetKeyState(VK_LBUTTON) < 0 then begin //線の描画方法、pmCopyは色を変更できるように pbxDraw.Canvas.Pen.Mode := pmCopy; pbxDraw.Canvas.Pen.Width := 5; pbxDraw.Canvas.Pen.Color := clBlack; //現在の描画位置を座標(X, Y)に変更する pbxDraw.Canvas.MoveTo(preX,preY); //X と Y で指定される座標まで線を引く pbxDraw.Canvas.LineTo(X,Y); end; preX := X; preY := Y; end; end.