マウス周辺をリアルタイムで拡大表示する


ここではマウス周辺をリアルタイムで拡大表示(2倍)する方法を教えます。

下記の図は実行した時の例です。




■必要なコンポーネント

■使用するAPI関数


@最初に下記の図のように各コンポーネントを配置してください。
 *画面の左上がImage1、その右がImage2



*各値を次のようにして下さい。

Image1 Height 150 Width 200
Image2 Height 75 Width 100
Timer1 Interval 100


Aソースは下記のようになります。

マウス周辺をリアルタイムで拡大表示する処理
procedure TForm1.Timer1Timer(Sender: TObject);
Var
 hWnd : Integer; //ウインドウのハンドル
 DC  : Integer; //デバイスコンテキストのハンドル
 POI : Tpoint;  //POINTAPI構造体
begin

 //画像を削除
 Image1.Picture :=nil;

 //マウスカーソルの現在座標を取得する
 GetCursorPos(Poi) ;

 //マウス入力を受け持っているウインドウのハンドルを取得
 hWnd := GetCapture ;

 //デバイスコンテキストのハンドルを取得する
 DC := GetWindowDC(hWnd);

 //マウスカーソルの位置の画像をImage2に転送する(転送する幅は各自で変更してください)
 BitBlt(Image2.Canvas.Handle, 0, 0, Width, Height, DC, POI.x - 55, POI.y - 45, SRCCOPY);  
 //Image2の画像を拡大してImage1に転送する
 StretchBlt(Image1.Canvas.Handle, 0, 0, Image1.Width, Image1.Height,Image2.Canvas.Handle,  0, 0, Image2.Width, Image2.Height, SRCCOPY ) ;

 //画像を削除
 image2.picture :=nil;

 //デバイス コンテキストを解放する(これをしないとどんどん蓄積される)
 ReleaseDC(Form1.Handle, DC) ;

end;


B後はImage1を画面の左上にもって行き、Form1を縮小すれば終わりです。





Win32APIのページへ



ホーム PV ランキング