|
分類:[VB.NET/VB2005]
いつも拝見させて頂き非常に参考にさせていただいております。
現在、GraphicsPathに三角形や四角形、五角形等の様々な図形を追加し描画しております。 このGraphicsPathの輪郭線を取得したいのですが、どのようにすれば取得できるかで悩んでおります。 GraphicsPathをリージョン化し、APIのFrameRgnを使用して描けるような輪郭線を得たいのですが、 GraphicsPathから輪郭線情報(輪郭線1辺の始点終点の座標)を取得するにはどのようにすればよろしいでしょうか? そもそもGraphicsPathから輪郭線を求める事はできないのでしょうか…。 どうか、どなたかお知恵をお貸しください。
※パスに追加する図形の辺は隣接しているものとしております。 例:2つの四角形 -−--−- | | | -−--−-
下記の様なプログラムを実行した際の赤い線を求めたいのです Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint Dim grfx As Graphics = e.Graphics Dim room1 As PointF() = New PointF() {New PointF(50.0F, 50.0F), _ New PointF(100.0F, 50.0F), _ New PointF(100.0F, 100.0F)} Dim room2 As PointF() = New PointF() {New PointF(100.0F, 50.0F), _ New PointF(150.0F, 50.0F), _ New PointF(150.0F, 100.0F), _ New PointF(100.0F, 100.0F)}
Dim path As Drawing2D.GraphicsPath = New Drawing2D.GraphicsPath path.AddPolygon(room1) path.AddPolygon(room2)
'描画 Dim p As New Pen(Color.Black, 1) grfx.DrawPath(p, path) p.Dispose()
'取得したい輪郭線の描画(取得したい輪郭線座標) Dim outerPath As Drawing2D.GraphicsPath = New Drawing2D.GraphicsPath outerPath.StartFigure() outerPath.AddLine(New PointF(50.0F, 50.0F), New PointF(150.0F, 50.0F)) outerPath.StartFigure() outerPath.AddLine(New PointF(150.0F, 50.0F), New PointF(150.0F, 100.0F)) outerPath.StartFigure() outerPath.AddLine(New PointF(100.0F, 100.0F), New PointF(150.0F, 100.0F)) outerPath.StartFigure() outerPath.AddLine(New PointF(50.0F, 50.0F), New PointF(100.0F, 100.0F))
Dim p2 As New Pen(Color.Red, 3) grfx.DrawPath(p2, outerPath) p2.Dispose()
End Sub
|