C# GDI+-Technologie

Dec 17, 2016 am 10:01 AM

GDI+-Übersicht

GDI+ ist der Nachfolger von GDI, der in früheren Windows-Versionen enthaltenen Grafikgeräteschnittstelle. Es handelt sich um eine Anwendungsprogrammierschnittstelle (API), die ein Subsystem des Windows XP-Betriebssystems bildet. Die wichtigsten Namespaces und Beschreibungen der GDI+-Basisklassen: System.Drawing – enthält die meisten Klassen, Strukturen, Aufzählungen und Delegaten im Zusammenhang mit grundlegenden Zeichenfunktionen. System.Drawing.Drawing2D – Bietet Unterstützung für die fortschrittlichsten 2D- und Vektorzeichnungsvorgänge, einschließlich Anti-Aliasing, Geometrietransformationen und Grafikpfade. System.Drawing.Imaging – Verschiedene Klassen, die bei der Verarbeitung von Bildern (Bitmaps, GIF-Dateien usw.) helfen. System.Drawing.Printing – Eine Klasse, die verwendet wird, wenn ein Drucker oder ein Druckvorschaufenster als Ausgabegerät verwendet wird. System.Drawing.Design – Eine Reihe vordefinierter Dialogfelder, Eigenschaftenblätter und anderer Benutzeroberflächenelemente im Zusammenhang mit der Erweiterung der Benutzeroberfläche während des Entwurfs. System.Drawing.Text – Klasse, die erweiterte Vorgänge für Schriftarten und Schriftfamilien ausführt.

Grundlegendes Grafikzeichnen

Die Graphics-Klasse ist der Kern von GDI+. Das Graphics-Objekt stellt die GDI+-Zeichenoberfläche dar und stellt Methoden zum Zeichnen von Objekten auf Anzeigegeräten bereit. Die Graphics-Klasse kapselt die Methoden zum Zeichnen von geraden Linien, Kurven, Grafiken, Bildern und Text. Sie ist die von GDI+ verwendete Klasse zum Zeichnen von geraden Linien, Kurven, Grafiken, Bildern und Text.

Zeichnen Sie eine gerade Linie

Die DrawLine-Methode in der Graphics-Klasse kann überladen werden und wird hauptsächlich zum Zeichnen einer Linie verwendet, die zwei durch ein Koordinatenpaar angegebene Punkte verbindet. (1) Zeichnen Sie eine Linie, die zwei Punktstrukturen verbindet.

public void DrawLine(Pen pen, Point pt1,Point pt2)
Nach dem Login kopieren

Stift: Stiftobjekt, bestimmt Linienfarbe, -breite und -stil. pt1:Punktstruktur, die den ersten zu verbindenden Punkt angibt. pt2:Punktstruktur, die den zweiten zu verbindenden Punkt angibt. (2) Zeichnen Sie eine Linie, die zwei durch ein Koordinatenpaar angegebene Punkte verbindet.

Public void DrawLine(Pen pen,int x1,int y1,int x2,int y2)
Nach dem Login kopieren

Beispielcode zum Zeichnen einer geraden Linie:

private void button1_Click(object sender, EventArgs e)
{
    Graphics graphics = this.CreateGraphics();
    Pen myPen = new Pen(Color.Blue, 2);
    graphics.DrawLine(myPen, 50, 30, 170, 30);
}
Nach dem Login kopieren

Zeichnen Sie ein Rechteck

Die DrawRectangle-Methode der Graphics-Klasse kann überladen werden. (1) Zeichnen Sie das durch die Rechteckstruktur angegebene Rechteck.

public void DrawRectangle(Pen pen,Rectangle rect)
Nach dem Login kopieren

Stift: Stiftobjekt, bestimmt Linienfarbe, -breite und -stil. rect: Stellt die Rechteckstruktur zum Zeichnen eines Rechtecks ​​dar. Zum Beispiel:

Rectangle rect = new Rectangle(0, 0, 80, 50);
Nach dem Login kopieren

(2) Zeichnen Sie ein Rechteck, das durch das Koordinatenpaar Breite und Höhe angegeben wird.

public void DrawRectangle(Pen pen, int x, int y, int width, int height)
Nach dem Login kopieren

Stift: Stiftobjekt, bestimmt Linienfarbe, -breite und -stil. x: Die x-Koordinate der oberen linken Ecke des zu zeichnenden Rechtecks. y: Die y-Koordinate der oberen linken Ecke des zu zeichnenden Rechtecks. width und height stehen für Breite bzw. Höhe. Beispielcode zum Zeichnen eines Rechtecks:

private void button1_Click(object sender, EventArgs e)
{
    Graphics graphics = this.CreateGraphics();
    Pen myPen = new Pen(Color.Blue, 2);
    graphics.DrawRectangle(myPen, 70, 20, 80, 50);
}
Nach dem Login kopieren

Zeichnen einer Ellipse

DrawEllipse-Methode in der Graphics-Klasse, die überladen werden kann. Wird hauptsächlich zum Zeichnen von Ellipsen verwendet, deren Grenzen durch die Rechteckstruktur angegeben werden. (1) Zeichnen Sie eine Ellipse mit einer durch die Rechteckstruktur angegebenen Grenze.

public void DrawEllipse(Pen pen, Rectangle rect)
Nach dem Login kopieren

(2) Zeichnen Sie eine Ellipse, die durch einen Rand definiert ist (der Rand wird durch ein Koordinatenpaar, Höhe und Breite angegeben).

public void DrawEllipse(Pen pen, int x, int y, int width, int height)
Nach dem Login kopieren

Beispielcode zum Zeichnen einer Ellipse:

private void button1_Click(object sender, EventArgs e)
{
    Graphics graphics = this.CreateGraphics();
    Pen myPen = new Pen(Color.Blue, 3);
    Rectangle myRectangle = new Rectangle(70, 20, 100, 60);
    graphics.DrawEllipse(myPen, myRectangle);
}
Nach dem Login kopieren

Zeichnen Eine Kreisbogen

DrawArc-Methode in der Graphics-Klasse kann überladen werden. (1) Zeichnen Sie einen Bogen, der einen Teil der durch die Rechteckstruktur angegebenen Ellipse darstellt.

public void DrawArc(Pen pen, Rectangle rect, float startAngle, float sweepAngle)
Nach dem Login kopieren

Stift: Stiftobjekt, bestimmt Linienfarbe, -breite und -stil. rect: Rechteckstruktur, die die Grenze der Ellipse definiert. startAngle: Der Winkel (in Grad), gemessen im Uhrzeigersinn von der x-Achse zum Startpunkt des Bogens. SweepAngle: Der Winkel (in Grad), gemessen im Uhrzeigersinn vom StartAngle-Parameter bis zum Endpunkt des Bogens. (2) Zeichnen Sie einen Bogen, der den Teil der Ellipse darstellt, der durch ein Koordinatenpaar, Breite und Höhe angegeben wird.

public void DrawArc(Pen pen, int x, int y, int width, int height, int startAngle, int sweepAngle)
Nach dem Login kopieren

Beispielcode zum Zeichnen eines Bogens:

private void button1_Click(object sender, EventArgs e)
{
    Graphics graphics = this.CreateGraphics();
    Pen myPen = new Pen(Color.Blue, 5);
    Rectangle myRectangle = new Rectangle(70, 20, 100, 60);
    graphics.DrawArc(myPen, myRectangle,210,120);
}
Nach dem Login kopieren

Polygon zeichnen

erfordert ein Grafikobjekt, ein Stiftobjekt und ein Array von Point- (oder PointF-)Objekten. Die Graphics-Klasse stellt die DrawPolygon-Methode bereit. Das Pen-Objekt speichert die zum Rendern von Polygonen verwendeten Linienattribute, z. B. Breite und Farbe, und das Point- (oder PointF-)Objektarray speichert die einzelnen Eckpunkte des Polygons. Kann nachgeladen werden. (1) Zeichnen Sie ein Polygon, das durch eine Reihe von Punktstrukturen definiert ist.

public void DrawPolygon(Pen pen, Point[] pints)
Nach dem Login kopieren

(2) Zeichnen Sie ein Polygon, das durch eine Reihe von PointF-Strukturen definiert ist.

public void DrawPolygon(Pen pen, PointF[] pints)
Nach dem Login kopieren

Beispielcode für Zeichnungspolygone:

private void button1_Click(object sender, EventArgs e)
{
    Graphics graphics = this.CreateGraphics();
    Pen myPen = new Pen(Color.Red, 5);
    Point point1 = new Point(80, 20);
    Point point2 = new Point(40, 50);
    Point point3 = new Point(80, 80);
    Point point4 = new Point(160, 80);
    Point point5 = new Point(200, 50);
    Point point6 = new Point(160, 20);
    Point[] myPoints = { point1, point2, point3, point4, point5, point6 };
    graphics.DrawPolygon(myPen, myPoints);
}
Nach dem Login kopieren

Beispiel für Zeichnungsbasis Balken

Ein Kardinal-Spline ist eine Reihe einzelner Kurven, die zu einer größeren Kurve verbunden werden. Der Spline wird durch eine Reihe von Punkten und einen Spannungsparameter angegeben und verläuft reibungslos durch jeden Punkt der Reihe, ohne scharfe Ecken oder plötzliche Änderungen in der Steilheit der Kurve. (1) Zeichnen Sie einen Kardinal-Spline, der durch eine Reihe angegebener Punktstrukturen verläuft.

public void DrawCurve(Pen pen, Point[] points)
Nach dem Login kopieren

(2) Zeichnen Sie unter Verwendung der angegebenen Spannung einen Kardinal-Spline, der durch eine Reihe angegebener Punktstrukturen verläuft.

public void DrawCurve(Pen pen, Point[] points, float tension)
Nach dem Login kopieren

Spannung: Ein Wert größer oder gleich 0,0F, der die Spannung der Kurve angibt. (3) Beginnen Sie mit einem Offset relativ zum Anfang des Arrays und zeichnen Sie einen Kardinal-Spline, der durch einen Satz angegebener PointF-Strukturen verläuft.

public void DrawCurve(Pen pen, Point[] points, int offset, int numberOfSegments)
Nach dem Login kopieren

offset:从points参数数组中的第一个元素到曲线中起始点的偏移量。numberOfSegments:起始点之后要包含在曲线中的段数。 (4)使用指定张力,绘制经过一组指定Point结构的基数样条。

public void DrawCurve(Pen pen, Point[] points, int offset, int numberOfSegments, float tension)
Nach dem Login kopieren

绘制基数样条示例代码:

private void button1_Click(object sender, EventArgs e)
{
    Graphics graphics = this.CreateGraphics();
    Pen myPen = new Pen(Color.Red, 5);
    Point point1 = new Point(50, 20);
    Point point2 = new Point(60, 30);
    Point point3 = new Point(70, 25);
    Point point4 = new Point(100, 50);
    Point point5 = new Point(130, 30);
    Point point6 = new Point(150, 45);
    Point[] myPoints = { point1, point2, point3, point4, point5, point6 };
    graphics.DrawCurve(myPen, myPoints, 1.0F);
}
Nach dem Login kopieren

绘制贝赛尔样条

贝塞尔样条是由4个点指定的曲线:两个端点(p1,p2)和两个控制点(c1,c2)。曲线开始于p1,结束于p2。曲线不经过控制点,但是控制点像磁铁一样,在某些方向上拉伸曲线并影响曲线弯曲的方式。 调用Graphics类的DrawBezier方法,可重载。 (1)绘制由4个Point结构定义的贝塞尔样条。

public void DrawBezier(Pen pen, Point pt1, Point pt2, Point pt3, Point pt4)
Nach dem Login kopieren

4个Point点分别表示起始点、第一个控制点、第二个控制点和结束点。
(2)绘制由4个表示点的有序坐标对定义的贝塞尔样条。

public void DrawBezier(Pen pen, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4)
Nach dem Login kopieren

x2,y2及x3,y3分别表示第1个、第2个控制点相应坐标。顺序和第一种方法类似。
绘制贝塞尔样条示例代码:

private void button1_Click(object sender, EventArgs e)
{
    Graphics graphics = this.CreateGraphics();
    Pen myPen = new Pen(Color.Red, 5);
    float startX = 50.0F;
    float startY = 80.0F;
    float controlX1 = 150.0F;
    float controlY1 = 20.0F;
    float controlX2 = 230.0F;
    float controlY2 = 50.0F;
    float endX = 190.0F;
    float endY = 80.0F;
    graphics.DrawBezier(myPen, startX, startY, controlX1, controlY1, controlX2, controlY2, endX, endY);
}
Nach dem Login kopieren

绘制图形路径

路径是通过组合直线、矩形和简单的曲线而形成的。在GDI+中,GraphicsPath对象允许将基本构造块收集到一个单元中,调用一次Graphics类的DrawPath方法,就可以绘制出整个单元的直线、矩形、多边形和曲线。

public void DrawPath(Pen pen, GraphicsPath path)
Nach dem Login kopieren

pen:Pen对象,确定线条颜色、宽度和样式。path:要绘制的GraphicsPath图形路径。 PS:注意要引用System.Drawing.Drawing2D命名空间。
绘制图形路径示例代码:

private void button1_Click(object sender, EventArgs e)
{
    Graphics graphics = this.CreateGraphics();
    GraphicsPath myGraphicsPath = new GraphicsPath();
    Pen myPen = new Pen(Color.Blue, 1);
    Point[] myPoints = { new Point(15, 30), new Point(30, 40), new Point(50, 30) };
    myGraphicsPath.AddArc(15, 20, 80, 50, 210, 120);
    myGraphicsPath.StartFigure();
    myGraphicsPath.AddCurve(myPoints);
    myGraphicsPath.AddString("图形路径", new FontFamily("华文行楷"), (int)FontStyle.Underline, 50, new PointF(20, 50), new StringFormat());
    myGraphicsPath.AddPie(180,20,80,50,210,120);
    graphics.DrawPath(myPen, myGraphicsPath);
}
Nach dem Login kopieren

   


更多C# GDI+技术相关文章请关注PHP中文网!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was ist die Rolle von CHAR in C -Saiten? Was ist die Rolle von CHAR in C -Saiten? Apr 03, 2025 pm 03:15 PM

In C wird der Zeichenentyp in Saiten verwendet: 1. Speichern Sie ein einzelnes Zeichen; 2. Verwenden Sie ein Array, um eine Zeichenfolge darzustellen und mit einem Null -Terminator zu enden. 3. Durch eine Saitenbetriebsfunktion arbeiten; 4. Lesen oder geben Sie eine Zeichenfolge von der Tastatur aus.

Wie man verschiedene Symbole in der C -Sprache verwendet Wie man verschiedene Symbole in der C -Sprache verwendet Apr 03, 2025 pm 04:48 PM

Die Nutzungsmethoden von Symbolen in der C-Sprachabdeckung Arithmetik, Zuordnung, Bedingungen, Logik, Bitoperatoren usw. werden für grundlegende mathematische Operationen verwendet, Zuordnungsoperatoren werden zur Zuordnung und Addition verwendet, Subtraktion, Multiplikationszuordnung und Abteilungszuweisung, Zustandsbetreiber werden für Unterschiede verwendet. Logische Operationen werden verwendet. Logische Operationen werden verwendet. Logische Operationen werden verwendet. Zeiger, Markierungen am Ende der Datei und nicht numerische Werte.

Wie man mit Sonderfiguren in der C -Sprache umgeht Wie man mit Sonderfiguren in der C -Sprache umgeht Apr 03, 2025 pm 03:18 PM

In der C -Sprache werden Sonderzeichen durch Escape -Sequenzen verarbeitet, wie z. B.: \ n repräsentiert Linienbrüche. \ t bedeutet tab charakter. Verwenden Sie Escape -Sequenzen oder Zeichenkonstanten, um Sonderzeichen darzustellen, wie z. B. char c = '\ n'. Beachten Sie, dass der Backslash zweimal entkommen muss. Verschiedene Plattformen und Compiler haben möglicherweise unterschiedliche Fluchtsequenzen. Bitte wenden Sie sich an die Dokumentation.

Der Unterschied zwischen Multithreading und asynchronem C# Der Unterschied zwischen Multithreading und asynchronem C# Apr 03, 2025 pm 02:57 PM

Der Unterschied zwischen Multithreading und Asynchron besteht darin, dass Multithreading gleichzeitig mehrere Threads ausführt, während asynchron Operationen ausführt, ohne den aktuellen Thread zu blockieren. Multithreading wird für rechenintensive Aufgaben verwendet, während asynchron für die Benutzerinteraktion verwendet wird. Der Vorteil des Multi-Threading besteht darin, die Rechenleistung zu verbessern, während der Vorteil von Asynchron nicht darin besteht, UI-Threads zu blockieren. Die Auswahl von Multithreading oder Asynchron ist von der Art der Aufgabe abhängt: Berechnungsintensive Aufgaben verwenden Multithreading, Aufgaben, die mit externen Ressourcen interagieren und die UI-Reaktionsfähigkeit asynchron verwenden müssen.

Der Unterschied zwischen char und wchar_t in der C -Sprache Der Unterschied zwischen char und wchar_t in der C -Sprache Apr 03, 2025 pm 03:09 PM

In der C -Sprache ist der Hauptunterschied zwischen char und wchar_t die Zeichencodierung: char verwendet ASCII oder erweitert ASCII, wchar_t Unicode; char nimmt 1-2 Bytes auf, wchar_t nimmt 2-4 Bytes auf; char ist für englischen Text geeignet. Wchar_t ist für mehrsprachige Text geeignet. char ist weithin unterstützt, wchar_t hängt davon ab, ob der Compiler und das Betriebssystem Unicode unterstützen. char ist in der Charakterbereich begrenzt, WCHAR_T hat einen größeren Charakterbereich und spezielle Funktionen werden für arithmetische Operationen verwendet.

Wie man CHO in C -Sprache umwandelt Wie man CHO in C -Sprache umwandelt Apr 03, 2025 pm 03:21 PM

In der C -Sprache kann die char -Typ -Konvertierung direkt in einen anderen Typ konvertiert werden, wenn: Casting: Verwenden von Casting -Zeichen. Automatische Konvertierung des Typs: Wenn ein Datentyp einen anderen Werttyp berücksichtigen kann, wandelt der Compiler diese automatisch um.

Was ist die Funktion der C -Sprachsumme? Was ist die Funktion der C -Sprachsumme? Apr 03, 2025 pm 02:21 PM

Es gibt keine integrierte Summenfunktion in der C-Sprache, daher muss sie selbst geschrieben werden. Die Summe kann erreicht werden, indem das Array durchquert und Elemente akkumulieren: Schleifenversion: Die Summe wird für die Schleifen- und Arraylänge berechnet. Zeigerversion: Verwenden Sie Zeiger, um auf Array-Elemente zu verweisen, und eine effiziente Summierung wird durch Selbststillstandszeiger erzielt. Dynamisch Array -Array -Version zuweisen: Zuordnen Sie Arrays dynamisch und verwalten Sie selbst den Speicher selbst, um sicherzustellen, dass der zugewiesene Speicher befreit wird, um Speicherlecks zu verhindern.

So verwenden Sie char Array in C -Sprache So verwenden Sie char Array in C -Sprache Apr 03, 2025 pm 03:24 PM

Das Char -Array speichert Zeichensequenzen in der C -Sprache und wird als char Array_name [Größe] deklariert. Das Zugriffselement wird durch den Einweisoperator weitergeleitet, und das Element endet mit dem Null -Terminator '\ 0', der den Endpunkt der Zeichenfolge darstellt. Die C -Sprache bietet eine Vielzahl von String -Manipulationsfunktionen wie Strlen (), Strcpy (), Strcat () und strcmp ().

See all articles