上へ 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プロパティはソース側の画像には設定できないので、デスティネーション側の領域に設定する。
当然、単純な矩形も含まれる。
●方法
- 元画像に切り出したい領域を希望の図形(矩形、楕円や多角形)で設定する。
- その図形の外接矩形を定義する
- 切り出した画像の矩形領域を上記の矩形とする。→この矩形がソースの転送領域となる。
- デスティネーション領域の設定
・単独の場合は、Bitmapなどをその矩形サイズとする
・別の画像の上にコラージュする場合は、その矩形を指定の場所とする
- 希望の図形をデスティネーション領域に合わせた座標にてGraphicPath化する
- GraphicPathをデスティネーションGraphicsのSetClip()にてClipにする
- ソース矩形からデスティネーションの矩形へDrawImageする
●実例
切り抜いた楕円の部分画像をフォームに貼り付ける例
gはフォームのGraphicsとする
picClipはソース画像とする
D im 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()
多角形や任意の閉じた図形の場合も同様。パス設定の部分をその図形に合わせればよい。
|