掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
生成したTPaintBoxに線を描画するには? (ID:20566)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Mr.XRAYさん、またまたありがとうございます。 ちょうど、教えていただいた内容についてトライしていました。 欲張って、次のアプローチをしていたのですが、 ・MyPaintBoxをクラスにする ・コンストラクタをオーバーライドしてそこでサイズなど初期化する ・Paintをオーバーライドして、対角線を描く Paintの中で描画した対角線が、他のウィンドウに消えた後、再描画されない現象に陥り、試行錯誤していたところです。 今回教えていただいたコードで試したら、ちゃんと再描画されますね!! コードを拝見していると、「独立したクラスの中で全部こなさなくてもいいんだなー」と感じます。 よく分からないと、つい大きなステップでトライしてしまいますが、いきなりクラス構築しないで、こういう形で動作を確認するのは大切なのでしょうね。 大変参考になります。教えていただいたコードを元に、トライしてみますね。 私のレベルですと、procedureの定義とか、リストの実行に若干ですが戸惑ったところがありました。 多くの方には既知のこととは思いますが、せっかくですので、全体を提示させていただきますね。 --- unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; PaintBox1: TPaintBox; procedure Button1Click(Sender: TObject); private procedure PaintBoxOnPaint(Sender: TObject); { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var MyPaintBox: TPaintBox; begin MyPaintBox := TPaintBox.Create(Self); with MyPaintBox do begin Parent := Self; Visible:=True; OnPaint := PaintBoxOnPaint; end; end; procedure TForm1.PaintBoxOnPaint(Sender: TObject); begin Canvas.Pen.Color:=clBlack; Canvas.Pen.Width:=5; Canvas.Pen.Style:=psSolid; Canvas.MoveTo(0,0); Canvas.LineTo(100,100); end; end.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.