掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
フォーム全体ではなく、特定のコントロールをキャプチャーするには? (ID:10933)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
後はご部分で修正して作成すればいいのですが,参考として,例えば 以下のコードのような感じでもいけますね. //==================================================================== // 指定したコントロールをキャプチャーしてForm2のImageに表示するプロ // グラムのサンプル // ここてでは,このFormのPanel1をキャプチャー // Halbow資料館のコードを修正したもの //==================================================================== unit Main; interface uses Windows, Messages, SysUtils, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls,Classes; type TForm1 = class(TForm) Panel1: TPanel; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private 宣言 } public procedure CaptureRect(r:TRect;BM:TBitmap); end; var Form1: TForm1; implementation {$R *.DFM} uses Unit2; procedure TForm1.Button1Click(Sender: TObject); var hTarget : HWND; r : TRect; begin //キャプチャーしたいコントロールのハンドル //ここをSelf.Handleにすればこの当然Form全体 hTarget := Panel1.Handle; //そのTRect構造体を取得 GetWindowRect(hTarget,r); //それをキャプチャーしてForm2のImageに表示 Form2.Image1.Picture.Bitmap.PixelFormat := pf24bit; CaptureRect(r,Form2.Image1.Picture.Bitmap); Form2.Show; Form2.Image1.Refresh; end; procedure TForm1.CaptureRect(r:TRect;BM:TBitmap); var DispDC : HDC; Width : Integer; Height : Integer; begin Width := r.Right-r.Left; Height := r.Bottom-r.Top; DispDC := CreateDC('DISPLAY',nil,nil,nil); try BM.Width := width; BM.Height := height; BitBlt(BM.Canvas.Handle,0,0,Width,Height,DispDC, r.Left,r.Top,SRCCOPY); finally DeleteDC(DispDC); end; end; end. キャプチャーしたコントロールを表示するForm2のコード例 procedure TForm2.FormCreate(Sender: TObject); begin Image1.Left := 0; Image1.Top := 0; Image1.AutoSize := True; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.