C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 36 を表示中)
■18137 / )  GraphicsPathから輪郭線を求めるには
□投稿者/ enough326 (1回)-(2008/05/09(Fri) 13:44:40)

分類:[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

返信 編集キー/


管理者用

- Child Tree -