システムに完全な長方形以外を無効にすることはできません。
したがって、時間を節約するためにアウトライン パスを使用することはできません。
ただし、それは他のことに役立つ場合があります。2 つのオプションを見てみましょう。
- アウトラインパスを作成できます
- 地域の一部を除外できます
アウトラインを作成する最も簡単な方法GraphicsPath
は、特定のパスを次のように拡張Pen
することです。
GraphicsPath gp = new GraphicsPath();
gp.AddRectangle(r0);
using (Pen pen = new Pen(Color.Green, 3f)) gp.Widen(pen);
これにより、、などPen
を含むの多くのオプションをすべて利用できます。DashStyles
Alignment
LineJoins
別の方法は、デフォルトで作成しFillMode.Alternate
、単純に小さい図を追加することです。
Rectangle r0 = new Rectangle(11, 11, 333, 333);
Rectangle r1 = r0;
r1.Inflate(-6, -6);
GraphicsPath gp = new GraphicsPath();
gp.AddRectangle(r0);
gp.AddRectangle(r1);
これでパスを埋めることができます
g.FillPath(Brushes.Red, gp);
ClipBounds
またはそれを使用してGraphics
オブジェクトの をクリップし ますg
:
g.SetClip(gp);
この後、 を含む描画はすべてClear
、アウトライン内のピクセルにのみ影響します。
完了したら、次のように記述できます。
g.ResetClip();
グラフィックターゲットのフルサイズで描画を続けます。
または、パスを次のベースとして使用できますRegion
。
Region r = new Region(gp);
a をそれに制限Control
します..:
somecontrol.Region = r;
Regions
いくつかのセット操作をサポートしているため、上記のアウトライン パスを使用する代わりに、これを記述して同じ結果を得ることができます。
Region r = new Region(r0);
r.Exclude(r1);