ホームページ  >  記事  >  バックエンド開発  >  C# GDI+ プログラミング (2)

C# GDI+ プログラミング (2)

高洛峰
高洛峰オリジナル
2016-12-17 10:17:481389ブラウズ

よく使用される描画関数

DrawArc は円弧を描画します

例: graphics.DrawArc(pen,0,0,200,200,90,120)

最後から 2 番目のパラメータは開始次数を表し、最後のパラメータは円弧のスパン次数です。たとえば、開始次数は 90 で、円弧の広がり次数は 120 です

赤いのが円弧です。同様のメソッドには、扇形を描画する DrawPie や扇形を塗りつぶす FillPie などがあります。すべてに開始度数と範囲度数があります。

DrawPolygon はポリゴンを描画します

例: Point []pt=new Point[]{new Point(0,50),new Point(0,100),new Point(100,100)};
graphics.DrawPolygon(pen, pt);

Point配列は各点の位置と点の数を指定します。 DrawPolygon で描画した多角形は閉じられ、最初の点と最後の点が DrawPolygon によって自動的に接続されます。

DrawCurve はカーディナル スプラインを描画します

例: Point[] pt = new Point[] { new Point(0, 0), new Point(100, 50),new Point(200,0)}; 1.5f);

最後のパラメータは張力の値を表します。この描画関数についてはあまり詳しくなく、大まかにしかわかりません。自由に使えないと言ってもいいでしょう。

曲線を形成するには少なくとも 3 つの点が必要です。 GDI+ 参考資料からコピーした写真をご覧ください。

DrawBezier はベジェ スプラインを描画します

例: graphics.DrawBezier(pen, 100, 0, 200, 20, 0, 80, 100, 100)

ベジェ スプラインは 4 つの点で構成されます。最初の点と最後の点は直線の 2 点として機能し、他の 2 点は磁石として機能しますが、線はこれら 2 つの磁石点を通過しませんが、これら 2 つの磁石点は線を直線に向かって動かします。吸う。こうしてベッセルスプラインが形成されます。

Path GraphicsPath

GraphicsPath クラス属性 System.Drawing.Drawing2D 名前空間

Path は様々な線で構成されていると考えることができ、四角形も 4 本の直線で構成されているとみなすことができ、円も Made で構成されているとみなすことができます。いくつかの円弧のアップ。

そのため、GraphicsPath クラスには、AddLine 直線パス、AddEllipse 楕円パス、AddRectangle 長方形パス、

AddBezier ベジェ パス、AddString 文字列パスなど、さまざまな形状を追加するためのパス関数があります。

これらのパスは追加されていますが、もちろん目には見えません。Graphics クラスの DrawPath 関数を使用して、ブラシでパスの軌跡を記述することができます。

例を見てください:

private void formPaint(Object sender, PaintEventArgs e)

or.FromArgb(0, 255, 0), 2);

Rectangle rect = new Rectangle(10, 10, 100, 100);

GraphicsPath grcPath = using use using use using Rect using Rectangle through using ' s through through using 's ' through ‐ ‐ ‐ ‐ ‐ grcPath.AddEllipse(rect);
use use with use using using ' の四角形 using ' use using using using through out through out out through out through out through out ' s ' s ' through ‐ to ‐‐ '‐‐‐‐‐‐ light を直方体にする); ;
grcPath.grcPath);
}

PathGradientBrush

使用例:
V Private void Formpaint (Object SENDER, PAINTEVENTARGS E) {

// パスを作成します
GraphicSpath Path = New GraphicSpath () , 100);
Pathgradientbrush Brush = New Pathgradientbrush (PATH);中心点は白です。SurroundColors = new Color[] {Color.Black };
の色。黒です。つまり、中心点からパス上の各点まで、白から黒へのグラデーションがあります。 。

PathGradientBrush で計算された中心点を使用したくない場合は、brush.CenterPoint = new Point(20, 50);

複数のパス ブラシのように CenterPoint を指定することもできます。カラーグラデーション

マルチプラーグラデーションは、以前の線形勾配絵画に導入されているため、パスの複数の色の勾配は直接類似しています。 path = new GraphicsPath();
Rectangle rect = new Rectangle(0, 0, 100, 100);
path.AddRectangle(rect);
//パス ブラシを作成します
PathGradientBrush Brush = new PathGradientBrush(path);

カラーブレンド赤、カラー.グリーン、カラー.ホワイト };

//パス ブラシで四角形を塗りつぶします

e.Graphics.FillRectangle(brush, rect);

中心点の色は color_blend の最後の色です。色の配列は、さまざまな色のグラデーションと同様に、パス上のすべての点に中心点を配置できます。「直線を作成する」を参照してください。すると、この線の 3 分の 2 が特定の色から特定の色へのグラデーションになり、もう 1 つは特定の色から特定の色へのグラデーションになります。 -3 番目は、特定の色から特定の色へのグラデーションです。

上記は、赤から緑までのグラデーション範囲: 0~2/3、緑から白(中心点の色): 2/3~1; 直線全体の長さを 1 に置き換えると仮定します。また、中心点の位置もカスタマイズ可能です。

点で構成されたパスを使用したブラシ

例:

private void formPaint(Object sender, PaintEventArgs e)
{
Rectangle rect = new Rectangle(0, 0, 100, 100);
Point []pts=new Point[] {new Point(50,0),new Point (0,100),new Point(100,100)};
PathGradientBrush Brush=new PathGradientBrush(pts); // パスポイントの色
Brush.SurroundColors=new Color[]{Color.Black};
e.Graphics.FillRectangle(brush) 、rect);
}

この種の点で構成されるグラフィックスは、GraphicsPath を渡さずにパス ブラシによって直接作成されます。上記の点について、パス ブラシはこれらの点を (順番に) 自動的に接続します。図形を作成して塗りつぶしますが、塗りつぶされる範囲はこれらの点で構成される形状に限定されます。上と同じように、このブラシは長方形を塗りつぶすために使用されます

が、三角形の形状を超えた部分は塗りつぶされません。これはグラフィックス パスと同じですが、パスを埋めることだけに限定されます。このグラフィックスの作成は、AddPolygon ポリゴン パス関数などの GraphicsPath を通じて完了することもできます。次に、Graphics クラスの FillPolygon 関数を使用してそれを塗りつぶします。

AddLines を使用してパス関数を追加することもできます。この関数は直線で構成されるグラフですが、基本的には 2 つの点で直線を構成します。

ただし、形成されたグラフィックスを閉じる必要があります。そうしないと、望ましい結果が得られません。次に、FillPath を呼び出してパスを埋めます。

AddLines の例:

private void formPaint(Object sender, PaintEventArgs e)

{

//パスを作成

path = new GraphicsPath() ;
Rectangle rect = new Rectangle(0, 0, 100, 100);
Point [] pts = 新しいポイント[] { 新しいポイント (50, 0), 新しいポイント (0, 100), 新しいパス (100, 100)};
e.Graphics.FillPa th(ブラシ、パス) ;

}

FillPath 関数は DrawPath と似ていますが、DrawPath はブラシを使用してパスを記述するのに対し、FillPath は「fill」を使用してパスを記述します。

FillPath によって埋められるパスには特定の制限があり、閉じられていることに注意してください。衝突しないでください。

PathGradientBrush クラスの SurroundColors 属性メンバー、パス ポイント上の複数の色

以前は 1 つの色のみを指定しましたが、SurroundColors は Color 配列であり、複数の色を指定できます。指定されるのは、図形の角の点の色です。たとえば、三角形には 3 つの角がありますが、これら 3 つの角の点に 3 つの異なる色を指定できます。ただし、三角形には 3 つの角しかないため、4 色にすることはできません。範囲を超えた場合はエラーとなります。

長方形の場合も同様で、色は4色指定できますが、長方形など指定した色の数が角の点の数より少ない場合は、角の1点の色だけを指定します。

その後、残りのコーナーポイントは SurroundColors 配列の最後のカラー値を使用します。

パス ブラシの最初の例を変更して、4 隅の点の色を指定しましょう。以下の通り:

V Private void Formpaint (Object SENDER, PAINTEVENTARGS E) {

// パスを作成します
GraphicSpath Path = New GraphicSpath () , 100); ; パスグラディエントブラシ = New Pathgradientbrush (PATH);ポイントは白です

.centercolor = color.white; .Surroundcolors = New Color[] {Color.Black,Color.Red,Color.Green,Color.Blue};
ドットの色の違いが大まかにわかります。それは黒、赤、青、緑です。左上 (0,0)、右上 (100, 0)、右下 (100, 100)、左下 (0, 100) の 4 つの隅の点に対応します。

このグラデーション ブラシがどのように見えるか、またはそのベースになっているものについて話しましょう。まず、SurroundColosでは角点(0,0)をColor.Black、角点(100,0)をColor.Redとして指定し、この2点を直線で結ぶことができます。この直線にも黒から赤へのグラデーションがかかっています。そしてこの直線は途中にあります。

すると、このパス(直線)上の各点は異なる色になります。

たとえば、(0, 0) は黒、(1, 0) は明るい黒です。 。 。 。 。 (99,0) は濃い赤です (100,0) は赤です。

中心点の色は白なので、中心点から0,0までの直線は白から黒へのグラデーション、(1,0)までは白から明るい黒へのグラデーションです。

他のコーナーポイントのグラデーションも同様です。

上記のグラデーションはこれらのルールに従って形成されます。

別の三角形の例:

private void formPaint(Object sender, PaintEventArgs e)

{

//パスを作成

Path = new GraphicsPath( );

Point []pts = new Point[] { new Point( 50, 0 ), new Point(0, 100), new Point(100, 100) };

path.AddLines(pts); PathGradientBrush Brush=new PathGradientBrush(path); // センターカラー白

ブラシ .CenterColor=Color.White;

//コーナーポイントの色: 赤、緑、青。 pts 配列の順に

Brush.SurroundColors = new Color[] { Color.Red, Color.Green, Color.Blue };

use through using ‐ out through Through Out off ‐ ‐‐‐‐‐‐‐‐ ‐‐‐out の順序を整える

}

上記の知識点を理解した後、五芒星形の例を作成してみましょう (パス グラデーション ブラシを使用し、さまざまな角の色を使用します)。





C# GDI+ プログラミング (2) 関連記事の詳細については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。