お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"ポリゴンで囲んだ範囲の画像をコピーする。"



 ポリゴンで囲んだ範囲の画像をコピーする。




 お絵かきソフトなどにある範囲選択した部分の画像のコピーを Windows
API を使って実現します。
 指定範囲のみコピーするために、CopyRect の前にSelectClipRgn で
クリッピング範囲にリージョンを割り当てます。リージョンに多角形を割り付
けるために、BeginPath,EndPath,PathToRegion という API を使って
います。 ついでに文字列を使う例も示しておきます。
 フォームに Image1, Image2, Button1 を貼りつけてください。

procedure TForm1.Button1Click(Sender: TObject);
var
  Rgn: HRGN;
begin
  Image1.Picture.LoadFromFile('SHIPPING.BMP');  //適当に
  Image2.Width  := Image1.Width;
  Image2.Height := Image1.Height;
  BeginPath(Image1.Canvas.Handle);
  Image1.Canvas.Polygon([Point(50, 0), Point(0, 50), Point(50, 100)]);
  Image1.Canvas.Font.Size := 50;
  Image1.Canvas.TextOut(50, 100, 'Delphi');
  EndPath(Image1.Canvas.Handle);
  Rgn := PathToRegion(Image1.Canvas.Handle);
  SelectClipRgn(Image2.Canvas.Handle, Rgn);
  Image2.Canvas.CopyRect(Rect(0, 0, Image1.Width, Image1.Height),
                         Image1.Canvas,
                         Rect(0, 0, Image1.Width, Image1.Height));
  DeleteObject(Rgn);
end;



    平成10年8月22日(土)  fumika(YRK00111@nifty.ne.jp)
         ★☆★ http://www2m.biglobe.ne.jp/~fumika/ ★☆★

Original document by fumika    氏 ID:(YRK00111)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum