一般的に使用される画像視聴ソフトウェアには、この機能をシミュレートするためにこの例を拡大できる関数があります。
2つのタイムコンポーネントをフォームに追加し、タイムコンポーネントの1つがImage1に設定されており、元の画像表示のキャリアとして機能します。別のタイムコンポーネントには、Image2に設定された名前のプロパティがあり、拡大した画像を表示できます。コンポーネントを追加した後の形式を図1に示します。
図1コンポーネントを追加した後の形式
この例のコアは、StretchBlt関数を使用してローカル画像増幅を実現します。
手順tform1.image1mousemove(sender:tobject; shift:tshiftstate; x、y:integer);
始める
Stretchblt(image2.canvas.handle、0,0、image2.width、image2.height、
Image1.Canvas.Handle、X-20、Y-20,40,40、srccopy);
image2.refresh;
screen.cursors [1]:= loadcursorfromfile( 'magnify.cur');
self.cursor:= 1;
終わり;
このプログラムは、最初にストレッチブラット関数を呼び出し、マウスの現在の位置を中心点として使用し、40の副長さのimage1コンポーネント上のローカル画像を選択し、image2コンポーネントのローカル画像を拡大します。次に、image2コンポーネントの表示を呼び出すことにより、Image2コンポーネントの表示が更新されます。最後に、マウスポインターを新しい形状に設定します。
プログラムコードは次のとおりです。
ユニットユニット1;
インタフェース
用途
窓、メッセージ、sysutils、バリアント、クラス、グラフィック、コントロール、フォーム、
ダイアログ、extctrls、stdctrls;
タイプ
tform1 = class(tform)
Image1:タイム;
Image2:タイム;
手順image1mousemove(sender:tobject; shift:tshiftstate; x、y:integer);
手順formmousemove(sender:tobject; shift:tshiftstate; x、y:integer);
プライベート
{プライベート宣言}
公共
{公開宣言}
終わり;
var
form1:tform1;
実装
{$ r *.dfm}
手順tform1.image1mousemove(sender:tobject; shift:tshiftstate; x、y:integer);
始める
Stretchblt(image2.canvas.handle、0,0、image2.width、image2.height、image1.canvas.handle、x-20、y-20,40,40、srccopy);
image2.refresh;
screen.cursors [1]:= loadcursorfromfile( 'magnify.cur');
self.cursor:= 1;
終わり;
手順tform1.formmousemove(sender:tobject; shift:tshiftstate; x、y:integer);
始める
screen.cursors [1]:= crdefault;
self.cursor:= 1;
終わり;
終わり。
ファイルを保存し、F9を押してプログラムを実行します。
図2プログラム操作の結果
ズームイン画像は、優れた画像視聴ソフトウェアの必要な機能です。