ターボdeliphiのPaintBoxです
procedure TForm1.Button1Click(Sender: TObject);
begin
PaintBox1.Invalidate;
PaintBox1.Canvas.MoveTo(0,0);
PaintBox1.Canvas.lineTo(100,100);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
PaintBox1.Canvas.MoveTo(0,0);
PaintBox1.Canvas.lineTo(100,100);
end;
procedure TForm1.PaintBox1Paint(~~~~~
ボタン1でlineTo(100,100)は描画されず、ボタン2では描画されます。
つまりPaintBox1.Invalidateで再描画させている微妙なタイミングのせいでしょうか?
再描画が終了してからlineTo(100,100)を描画したいのですが、それを知るコマンド?関数?はありますか?
No.1ベストアンサー
- 回答日時:
# Deliphiは使ってませんが …
Invalidateは一般的な実装なら WinAPIのInvalidateRectを呼び出すと思います
このInvalidateRectは指定された矩形領域を無効とマーキングするだけでこのAPIで消去されるわけではないのです
したがって 1つのプロシージャの中で
Invalidate
グラフィック描画メソッド
または
グラフィック描画メソッド
Invalidate
どちらも結果は同じになると思います
ペイントイベントに何も記述がないならせっかく描画してもこのフォームのペイントイベントで上書きされてしまって結果 何も描画されていないような状態になるでしょう
何かのイベントでInvalidateを使うのであれば Paintイベントで描画されることを期待していると考えたほうがいいですよ
メモリーDC(裏画面)を使って描画しておきPaintイベントでメモリーDCから実画面へ転送するなんて使い方をします
とても参考になりました。
事情があってInvalidateを使ってましたが、やっぱりRepaintでやります。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonによる物理の斜方投射の位置座標表示について 2 2023/06/05 12:46
- その他(プログラミング・Web制作) Pythonにおける物理のシミュレーションでの単位変換について 2 2023/06/02 17:11
- その他(プログラミング・Web制作) 次に、楽天のアジャイル就活に参加して、1日で内定を獲得できる。私は大企業に就職できる? 2 2022/04/17 13:38
- その他(プログラミング・Web制作) uwscとWinShotを使いスクリーンショットを撮る 1 2022/06/30 21:15
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- 英語 Digital protocol allows for a completely virtual p 1 2022/10/06 10:47
- Visual Basic(VBA) Visual Basic : ImageListの画像がそろったときにメッセージを表示 1 2023/07/20 13:53
- その他(プログラミング・Web制作) ボールの動きがスムーズに動いてかつ目盛り線描画を維持するためには 4 2023/05/31 10:01
- Visual Basic(VBA) 複数セルに〇印をつけるマクロ 4 2022/09/07 05:33
- その他(教育・科学・学問) グーグルスプレッドシートの図形描画のバグ?「保存して終了」ボタンが突然消失 2 2022/04/05 13:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ListBoxで改行したい
-
for文の実行速度を遅くしたいの...
-
円の頂点の求め方を知りたいです。
-
C#を用いて描画する四角形の角...
-
Excel VBA:コントロールボタン...
-
給紙トレイをダイアログを使わ...
-
c言語 ちらつき
-
角が丸い長方形の描画
-
CADとC言語のリンク
-
C++/CLIを用いて画像をクリップ...
-
C# シューティングゲーム ...
-
Word 描画オブジェクトを削除...
-
BCB5:Canvas->FrameRectで描画...
-
Pythonにおける物理のシミュレ...
-
worksheetFunctionクラスのVloo...
-
VBA シートのボタン名を変更し...
-
実行時エラー 438になった時の...
-
【C#/Java?】try-catchでcatch...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームを表示中にシ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ListBoxで改行したい
-
for文の実行速度を遅くしたいの...
-
給紙トレイをダイアログを使わ...
-
Word 描画オブジェクトを削除...
-
VB.NETでグラフィックを描くと...
-
C#を用いて描画する四角形の角...
-
C# DrawImage 物理サイズでな...
-
ビットマップに描画をしてピク...
-
PowerPoint の VBA
-
画面に絵を出す方法
-
DrawLineで引いた線が消えてし...
-
VC++ ドラッグしながらの図の...
-
円の頂点の求め方を知りたいです。
-
MFCでのコンボボックスについて
-
画面の再描画について
-
Windows10のC#のピクチャーボッ...
-
フォームに描画して表示をスク...
-
VB PictureBoxの描画範囲
-
PictureBoxのダブルバッファリ...
-
C#で壁の当たり判定と自キャラ...
おすすめ情報