Heim  >  Artikel  >  Backend-Entwicklung  >  C# GDI+ Programmierung (2)

C# GDI+ Programmierung (2)

高洛峰
高洛峰Original
2016-12-17 10:17:481453Durchsuche

Häufig verwendete Zeichenfunktionen

DrawArc zeichnet einen Bogen

Beispiel: Graphics.DrawArc(pen,0,0,200,200,90,120)

Der vorletzte Parameter stellt den Anfang dar Grad, und der letzte Parameter ist der aufgespannte Grad des Bogens. Beispielsweise ist der Anfangsgrad 90 und der Bogen umfasst 120 Grad

Der rote Wert ist der Bogen. Ähnliche Methoden umfassen DrawPie zum Zeichnen einer Fächerform und FillPie zum Füllen einer Fächerform. Alle verfügen über Einstiegsabschlüsse und übergreifende Abschlüsse.

DrawPolygon Polygon zeichnen

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

Punktarray gibt die Position jedes Punkts und die Anzahl der Punkte an. Das von DrawPolygon gezeichnete Polygon ist geschlossen und DrawPolygon verbindet automatisch den ersten und den letzten Punkt.

DrawCurve zeichnet kardinale Splines

Beispiel: Point[] pt = new Point[] { new Point(0, 0), new Point(100, 50),new Point(200, 0 )};
graphics.DrawCurve(pen, pt, 1.5f);

Der letzte Parameter stellt den Spannungswert dar. Ich weiß nicht viel über diese Zeichenfunktion funktioniert. Es ist etwas passiert. Man kann sagen, dass es nicht frei verwendet werden kann.

Es müssen mindestens drei Punkte vorhanden sein, um eine Kurve zu bilden. Sie sehen ein Bild, das ich aus dem GDI+-Referenzmaterial kopiert habe.

DrawBezier zeichnet Bezier-Splines

Beispiel: Graphics.DrawBezier(pen, 100, 0, 200, 20, 0, 80, 100, 100)

Bezier Der Searle-Spline besteht aus vier Punkten. Der erste und der letzte Punkt fungieren als zwei Punkte der geraden Linie, während die anderen beiden Punkte als Magnete wirken. Die Linie verläuft zwar nicht durch diese beiden Magnetpunkte,

aber diese beiden Magnetpunkte saugen darauf zu. Dadurch entsteht ein Bessel-Spline.

Path GraphicsPath

GraphicsPath-Klassenattribut System.Drawing.Drawing2D-Namespace

Der Pfad besteht aus verschiedenen Linien. Dann kann das Rechteck auch als aus vier zusammengesetzt betrachtet werden Neben geraden Linien kann man sich einen Kreis auch so vorstellen, dass er aus mehreren Bögen besteht.

Die GraphicsPath-Klasse verfügt also über Pfadfunktionen zum Hinzufügen verschiedener Formen, wie z. B. den linearen Pfad „AddLine“, den elliptischen Pfad „AddEllipse“, den rechteckigen Pfad „AddRectangle“, den Pfad „AddBezier“ und den Pfad „AddString“.

Diese Pfade werden hinzugefügt, natürlich sind sie nicht sichtbar. Wir können die DrawPath-Funktion in der Graphics-Klasse verwenden, um die Flugbahn des Pfades mit einem Pinsel zu beschreiben.

Sehen Sie sich das Beispiel an:

private void formPaint(Object sender, PaintEventArgs e)

{

Graphics Graphics = e.Graphics;
P en pen = new Pen (Color. FromArgb(0, 255, 0), 2);
Rechteck rect = neues Rechteck(10, 10, 100, 100);
GraphicsPath grcPath = new GraphicsPath();
      grcPath.AddRectangle (rect) ;
              grcPath.AddEllipse(rect); ath.AddString("A", famFont, (int) FontStyle.Underline, 80f, rect, null);
//Pfad zeichnen
Grafiken. DrawPath(pen, grcPath);
}

PathGradientBrush

Anwendungsbeispiel:

private void formPaint(Object sender, PaintEventArgs e)
{
//Pfad erstellen
GraphicsPath path = new GraphicsPath();
Rechteck rect = new Rechteck(0, 0, 100, 100);
path.AddRectangle(rect);
//Erstelle einen Pfadpinsel
PathGradientBrush brush = new PathGradientBrush(path);
// Die Mittelpunktfarbe ist weiß
Pinsel. CenterColor = Color.White;
//Die Farbe auf dem Pfad (Punkt) ist Schwarz
brush.SurroundColors = new Color[] { Color.Black };
//Füllen Sie ein Rechteck mit dem Pfadpinsel
e.Graphics.FillRectangle(brush, rect);
}

Die Farbe des Mittelpunkts oben ist weiß und die Farbe auf dem Pfad (Punkt) ist schwarz, also von der Mittelpunkt zu jedem Die Punkte auf dem Pfad haben alle einen Farbverlauf von Weiß nach Schwarz.

Sie können den Mittelpunkt auch selbst angeben. Wenn Sie nicht den von PathGradientBrush berechneten Mittelpunkt verwenden möchten, geben Sie einfach CenterPoint an, z. B.brush.CenterPoint = new Point(20, 50);

Es gibt viele Pfadpinsel Eine Vielzahl von Farbverläufen

Mehrere Farbverläufe wurden in der vorherigen linearen Verlaufsmalerei eingeführt, daher ist auch der Pfad mehrerer Farbverläufe ähnlich :

Private Void Formpaaint (Object Sender, Painteventargs E)

{
// Pfad erstellen
GraphicSpath Path = New Graphicspath (
RECTANGLE RECT = Neues Rechteck (0, 0, 100, 100 );
path.AddRectangle(rect);
//Erstelle einen Pfadpinsel
PathGradientBrush brush = new PathGradientBrush(path);

//ColorBlend-Objekte erstellen und mehrere Farbverläufe angeben Information COLORBLEND COLOR_BLEND = New ColorBlend ();

// Mehrere Farben angeben
color_blend.colors = neue Farbe [] {color.red, color.green, color.white};
/// /Geben Sie den Farbbereich an
         color_blend.Positions=new float[]{0/3f,2/3f,3/3f};                                                                                                               InterpolationColors         Pinsel füllt ein Rechteck
e.Graphics.FillRectangle(brush, rect);
}

Die Farbe des Mittelpunkts ist die letzte im Array color_blend.Colors, die Sie vom Mittelpunkt aus platzieren können Zu jedem Punkt auf dem Weg wird sie als gerade Linie betrachtet. Dann sind zwei Drittel dieser Linie der Farbverlauf von welcher Farbe zu welcher Farbe und ein Drittel der Farbverlauf von welcher Farbe zu welcher Farbe.

Das Obige ist der Farbverlaufsbereich von Rot nach Grün: 0 bis 2/3, Grün bis Weiß (Mittelpunktfarbe): 2/3 bis 1. Angenommen, die Länge der gesamten geraden Linie wird durch ersetzt 1. Darüber hinaus kann auch die Mittelpunktposition individuell angepasst werden.

Ein aus Punkten bestehender Pfadpinsel

Beispiel:

private void formPaint(Object sender, PaintEventArgs e)
{
Rechteck rect = neues Rechteck(0, 0, 100, 100);
Punkt []pts =neuer Punkt[]{neuer Punkt (50,0),new Point(0,100),new Point(100,100)};
PathGradientBrushbrush=new PathGradientBrush(pts);
//Center Color
brush.CenterColor=brush Color.White;
                                                                                                                       🎜 >Diese Art von Grafik, die aus Punkten besteht, wird auch direkt vom Pfadpinsel erstellt, ohne GraphicsPath zu übergeben Füllung, aber der Füllbereich ist auf die durch diese Punkte gebildeten Grafiken beschränkt. Genau wie oben wird dieser Pinsel zum Füllen eines Rechtecks ​​verwendet,

, aber der Teil hinter der Dreiecksform wird nicht gefüllt. Dies ist dasselbe wie der Grafikpfad, beschränkt sich jedoch auf das Ausfüllen des Pfads. Diese Grafikerstellung kann auch über GraphicsPath abgeschlossen werden, beispielsweise über die Polygonpfadfunktion AddPolygon. Füllen Sie es dann mit der FillPolygon-Funktion in der Graphics-Klasse.

Sie können AddLines auch verwenden, um eine Pfadfunktion hinzuzufügen, die jedoch grundsätzlich aus zwei Punkten besteht, die eine gerade Linie bilden.

Die erstellten Grafiken müssen jedoch geschlossen sein, da sonst das gewünschte Ergebnis nicht erzielt werden kann. Rufen Sie dann FillPath auf, um den Pfad zu füllen.

AddLines-Beispiel:

private void formPaint(Object sender, PaintEventArgs e)

{

//Pfad erstellen

GraphicsPath path = new GraphicsPath();

Rechteck rect = neues Rechteck(0, 0, 100, 100);

Point[] pts = neuer Punkt[] { neuer Punkt(50, 0), neuer Punkt(0, 100), neuer Punkt(100, 100 )};
path.AddLines(pts);
PathGradientBrush brush = new PathGradientBrush(path);
//Center color
brush.CenterColor =Color.White;
//Path The Farbe auf dem Punkt
brush.SurroundColors=new Color[]{Color.Black};

e.Graphics.FillPath(brush, path);

}

Die FillPath-Funktion ist genau wie DrawPath, aber DrawPath verwendet einen Pinsel, um den Pfad zu beschreiben, während FillPath „fill“ verwendet, um den Pfad zu beschreiben.

Beachten Sie, dass der von FillPath gefüllte Pfad bestimmten Einschränkungen unterliegt und geschlossen ist. Lassen Sie sich nicht in Konflikte verwickeln.

SurroundColors-Attributmitglieder in der PathGradientBrush-Klasse, mehrere Farben an Pfadpunkten

Vorher habe ich nur eine Farbe angegeben, SurroundColors ist ein Farbarray, dann können mehrere Farben angegeben werden. Festgelegt wird die Farbe der Eckpunkte einer Figur.

Zum Beispiel hat ein Dreieck drei verschiedene Farben für die drei Eckpunkte, aber nicht vier Farben, da nur das Dreieck hat drei Ecken. Wenn der Bereich überschritten wird, tritt ein Fehler auf.

Das Gleiche gilt für Rechtecke. Sie können vier Farben angeben. Wenn jedoch die Anzahl der angegebenen Farben geringer ist als die Anzahl der Eckpunkte, z. B. bei einem Rechteck, gebe ich nur die Farbe eines Eckpunkts an.

Dann verwenden die verbleibenden Eckpunkte den letzten Farbwert des SurroundColors-Arrays.

Nehmen wir das erste Beispiel des Pfadpinsels und legen wir die Farben der vier Eckpunkte fest. Wie folgt:

private void formPaint(Object sender, PaintEventArgs e)
{
//Pfad erstellen
GraphicsPath path = new GraphicsPath();
Rechteck rect = new Rechteck(0, 0, 100, 100);
path.AddRectangle(rect);
//Erstelle einen Pfadpinsel
PathGradientBrush brush = new PathGradientBrush(path);
// Die Mittelpunktfarbe ist weiß
Pinsel. CenterColor = Color.White;
                                                                                                                                          Verwenden Sie den Pfadpinsel, um ein Rechteck zu füllen
e.Graphics.FillRectangle(brush, rect);
}

Die Farben an den vier Eckpunkten können sein ungefähr mit den Augen gesehen: Schwarz, Rot, Blau, Grün. Entspricht den vier Eckpunkten oben links (0,0), oben rechts (100, 0), unten rechts (100, 100) und

unten links (0, 100).

Lassen Sie uns darüber sprechen, wie dieser Verlaufspinsel aussieht oder worauf er basiert. Zunächst wird der Eckpunkt (0, 0) in SurroundColos als Color.Black bezeichnet, und der

Eckpunkt (100, 0) wird als Color.Red bezeichnet, und diese beiden Punkte können zu a verbunden werden Gerade. Auch diese gerade Linie weist einen Verlauf von Schwarz nach Rot auf. Und diese gerade Linie liegt auf dem Weg.

Dann hat jeder Punkt auf diesem Pfad (gerade Linie) eine andere Farbe.

Zum Beispiel ist (0, 0) schwarz, (1, 0) ist ein helleres Schwarz. . . . . (99,0) ist dunkelrot (100,0) ist rot.

Die Farbe des Mittelpunkts ist Weiß, daher ist die gerade Linie vom Mittelpunkt bis 0,0 ein Farbverlauf von Weiß nach Schwarz und bis (1,0) ein Farbverlauf von Weiß zu hellerem Schwarz .

Das Gleiche gilt für die Verläufe an anderen Eckpunkten.

Nach diesen Regeln wird der obige Farbverlauf gebildet.

Ein weiteres Dreiecksbeispiel:

private void formPaint(Object sender, PaintEventArgs e)

{

//Pfad erstellen
GraphicsP ath path = new GraphicsPath( Point []pts = new Point[] { new Point(50, 0), new Point(0, 100), new Point(100, 100) };
path.AddLines(pts);

PathGradientBrushbrush=new PathGradientBrush(path);
//Mittelfarbe Weiß

brush.CenterColor=Color.White;

//Eckenfarbe: Rot, Grün, Blau.
brush.surrourroundcolors = neue Farbe [] {color.red, color.green, color.blue};
// Pfad zum Malen verwenden
e.Graphics.fillpath (brush, path);
}

Nachdem Sie die oben genannten Wissenspunkte verstanden haben, können Sie versuchen, ein Beispiel für eine fünfzackige Sternform zu erstellen (verwenden Sie einen Pfadverlaufspinsel und verwenden Sie verschiedene Eckpunktfarben).


Weitere Artikel zum Thema C# GDI+ Programmierung (2) finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:C# GDI+ Programmierung (3)Nächster Artikel:C# GDI+ Programmierung (3)