らくがき帳プログラム

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

実行結果

graph-3

プログラム


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.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です