掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Imageで描画したものが常にTop (ID:42315)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
少し説明が足りなかったかもしれません。 まず、 >Panelのハンドル これは、デバイスコンテキストのハンドルと考えてよいですか? >としてTPanelを動的に生成する方法ですかね? 単に、現在のフォームの既存のTPanelのメッセージ処理を追加する ためのものなので、クラス名は変更しないでお試しください。 具体的には、TPanel描画の最後に、Imageを再描画させようとしています。 >違うアプローチで考えた方がいいのでしょうかね。 この方法にこだわる必要はないです。 (状況がつかめていないので、うまくいく保証もできないので) 念のため、テストコードを載せておきます。 Panel1をクリックすると、画像をファイルから読み込んで、Panel1に表示します。Image1には、あらかじめ画像をプリロードしておきます。 bmpにロードする画像ファイル名は任意のものに差し替えてください。 type TPanel = class(Vcl.ExtCtrls.TPanel) protected procedure WndProc(var AMsg: TMessage); override; end; TForm1 = class(TForm) Panel1: TPanel; Image1: TImage; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Panel1Click(Sender: TObject); private { Private 宣言 } dc: HDC; cv: TCanvas; bmp: TBitmap; public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} procedure TPanel.WndProc(var AMsg: TMessage); begin inherited; if AMsg.Msg=WM_PAINT then begin Form1.cv.StretchDraw(Rect(0, 0, Width, Height), Form1.bmp); Form1.Image1.Refresh; end; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin cv.Free; ReleaseDC(Panel1.Handle, dc); bmp.Free; end; procedure TForm1.FormCreate(Sender: TObject); begin bmp := TBitmap.Create; dc := GetDC(Panel1.Handle); cv := TCanvas.Create; cv.Handle := dc; end; procedure TForm1.Panel1Click(Sender: TObject); begin if bmp.Empty then bmp.LoadFromFile('..\..\hoge.bmp'); Panel1.Refresh; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.