らくがき帳プログラムを作ってみました。
マウスでドラッグした通りに線を描くというプログラムです。
「ナッキーの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.
