2011-01-31 21 views
1

私は、私が提供するポイントを与えられたイメージにポリゴンを描画する簡単なテストアプリケーションを作成しました。私は、ポリゴンにどのようにしたいのかを記入するブラシを作成しました。今はポリゴンはすべて塗りつぶしたいと思っています。だから、私のブラシを使って、ポリゴンの周りを描きたいので、それが見えるのはポリゴンの内側です。誰かが私がこれを達成する方法を知っていますか?グラフィックFillPolygon外観?

ありがとうございます!

+0

これはC#/ .NETであると仮定しますか?おそらくここであなたのタグを編集したいと思うでしょう。 – MusiGenesis

+0

申し訳ありませんが、私は十分具体的ではありませんでした。実際にはVB.netですが、その方法は同じであると思います(機能的に話す)。 – lhan

答えて

1

System.Drawing.Graphics.Clipはあなたが望むものだと思います。ここで

は、そのリンクからのコードサンプルです:

Private Sub SetAndFillClip(ByVal e As PaintEventArgs) 

    ' Set the Clip property to a new region. 
    e.Graphics.Clip = New Region(New Rectangle(10, 10, 100, 200)) 

    ' Fill the region. 
    e.Graphics.FillRegion(Brushes.LightSalmon, e.Graphics.Clip) 

    ' Demonstrate the clip region by drawing a string 
    ' at the outer edge of the region. 
    e.Graphics.DrawString("Outside of Clip", _ 
     New Font("Arial", 12.0F, FontStyle.Regular), _ 
     Brushes.Black, 0.0F, 0.0F) 

End Sub 

領域の外側のすべてを満たすために、あなたはあなたに描画されているDCの範囲を決定し、その矩形を埋めなければならないだろう、あなたのポイントから作成されたRegionにGraphics.Clipをセットした後。私は見つけることがありません驚いた

http://www.vb-helper.com/howto_net_control_region.html

+0

素晴らしい、私は私のために働くつもりだと思う!早速のお返事ありがとうございます! – lhan

3

Private Sub SetAndFillClip(ByVal e As PaintEventArgs) 

    ' Set the Clip property to a new region. 
    e.Graphics.Clip = GetRegionFromYourPoints() 

    ' Fill the entire client area, clipping to the Clip region 
    e.Graphics.FillRectangle(Brushes.LightSalmon, GetWindowExtentsFromYourWindow()) 
End Sub 

このリンクは点の配列からリージョンを作成する方法を示しています。

だから、あなたは、コードは次のようになります。この回答はどこでもどこでも、System.Drawing.Region のドキュメントを見ると非常に単純なようでした。

無限の領域からポリゴン(私はGraphicsPathである必要があると仮定します)を除外することができます。 Region.XORは、この場合には除外と同じように動作する必要があります。私の場合は

  Region region = new Region(); 
      region.MakeInfinite(); 
      GraphicsPath polygonPath = GetYourPolygon(); 
      region.Exclude(polygonPath); 
      e.Graphics.FillRegion(Brushes.Black, region); 

を私は単なるRectangleFを除外するために必要なが、これはトリックをした、それが周囲を満たし、一人で除外された領域を残しました。

+0

補足として、私はwageogheからの答えがうまくいくとは思わない。私は、クリップをポリゴン領域に設定すると描画をその領域内のみに制限すると思います。クリップをポリゴンに設定してウィンドウを埋めると、ポリゴンだけが塗りつぶされます。 –

+0

アドバイスをいただきありがとうございます!それはかなりうまくいく! – lhan

0

解決策をまだ見つけなかった人は、thisを見てください。箱の外に私のために働いた。

関連する問題