ホーム ] TIPS ウィンドウズ系 ] TIPS グラフィックス系 ] TIPS メルチメディア系 ] TIPS 理数系 ] TIPS 総覧 ]

上へ
G0001 色名一覧
G0002 アルファブレンド
G0003 カラーマップを作る
G0101 曲線の数値化
G0102 曲線長を測る
G0103 曲線の接線・法線
G0104 曲線のスムージング
G0201 図形の回転
G0202 領域の認識
G0301 文字の線形変換
G0302 文字の自由変形
G0303 文字の極座標変換
G0304 曲線に沿った文字列
G0305 飾文字-中抜き
G0306 飾文字-縁取り
G0307 飾文字-ドロップダウンシャドウ
G0501 画像の線形変換
G0502 画像の透明化
G0503 画像の任意形状切出し
G0504 画像の回転
G0505 画像の高速処理化

VB.NET2005 TIPS / グラフィックス系

G0503 画像の任意形状切出し

最終更新:2006/11/12 新規

●解説

 任意の形状で画像を切出す方法である。

●原理

 矩形の場合はDrawImageメソッドで直接切出しができるが、楕円や多角形、あるいは任意の閉じた図形での切り出しは、GraphicsオブジェクトのClipプロパティを使用する。但し、Clipプロパティはソース側の画像には設定できないので、デスティネーション側の領域に設定する。 当然、単純な矩形も含まれる。

●方法

  1. 元画像に切り出したい領域を希望の図形(矩形、楕円や多角形)で設定する。
     
  2. その図形の外接矩形を定義する
     
  3. 切り出した画像の矩形領域を上記の矩形とする。→この矩形がソースの転送領域となる。
     
  4. デスティネーション領域の設定

    ・単独の場合は、Bitmapなどをその矩形サイズとする
    ・別の画像の上にコラージュする場合は、その矩形を指定の場所とする
     
  5. 希望の図形をデスティネーション領域に合わせた座標にてGraphicPath化する
     
  6. GraphicPathをデスティネーションGraphicsのSetClip()にてClipにする
     
  7. ソース矩形からデスティネーションの矩形へDrawImageする

●実例

切り抜いた楕円の部分画像をフォームに貼り付ける例

gはフォームのGraphicsとする
picClipはソース画像とする

Dim srec As New RectangleF(), drec As New RectangleF()

srecにはソース側の楕円の外接矩形が設定されているとする
Xc、Ycは置きたい場所の中心とする

drec = srec
drec.X = Xc - drec.Width / 2
drec.Y = Yc - drec.Height / 2                   'デスティネーション矩形の設定
Dim pa As New GraphicsPath()
pa.AddEllipse(drec)
g.SetClip(pa)

g.DrawImage(picClip.Image, drec, srec, GraphicsUnit.Pixel)
g.ResetClip()
pa.Dispose()

多角形や任意の閉じた図形の場合も同様。パス設定の部分をその図形に合わせればよい。