GDI+ の概要
GDI+ は、以前のバージョンの Windows に含まれていたグラフィック デバイス インターフェイスである GDI の後継です。これは、Windows XP オペレーティング システムのサブシステムを形成するアプリケーション プログラミング インターフェイス (API) です。 GDI+ 基本クラスの主な名前空間と説明: System.Drawing -- 基本的な描画関数に関連するほとんどのクラス、構造体、列挙、およびデリゲートが含まれます。 System.Drawing.Drawing2D - アンチエイリアス、ジオメトリ変換、グラフィックス パスなど、最も高度な 2D およびベクトル描画操作のサポートを提供します。 System.Drawing.Imaging -- 画像 (ビットマップ、GIF ファイルなど) の処理を支援するさまざまなクラス。 System.Drawing.Printing -- プリンターまたは印刷プレビュー ウィンドウを出力デバイスとして使用する場合に使用されるクラス。 System.Drawing.Design -- 設計中のユーザー インターフェイスの拡張に関連する、多数の事前定義されたダイアログ ボックス、プロパティ シート、およびその他のユーザー インターフェイス要素。 System.Drawing.Text – フォントおよびフォント ファミリに対してより高度な操作を実行するクラス。
基本的なグラフィック描画
Graphics クラスは GDI+ のコアであり、GDI+ 描画面を表し、表示デバイスにオブジェクトを描画するためのメソッドを提供します。 Graphics クラスは、直線、曲線、グラフィックス、イメージ、およびテキストを描画するためのメソッドをカプセル化します。これは、GDI+ が直線、曲線、グラフィックス、イメージおよびテキストを描画するために使用するクラスです。これは、すべての GDI+ 操作の基本クラスです。
直線を描く
Graphics クラスの DrawLine メソッドはオーバーロードでき、主に座標ペアで指定された 2 点を結ぶ線を描画するために使用されます。 (1) 2 つの Point 構造を結ぶ線を描きます。
public void DrawLine(Pen pen, Point pt1,Point pt2)
pen: ペンオブジェクト。線の色、幅、スタイルを決定します。 pt1:Point 構造体。接続される最初の点を示します。 pt2:Point 構造体。接続される 2 番目の点を示します。 (2) 座標ペアで指定された 2 点を結ぶ線を描きます。
Public void DrawLine(Pen pen,int x1,int y1,int x2,int y2)
直線を描くためのサンプルコード:
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); }
四角形を描く
Graphics クラスの DrawRectangle メソッド。オーバーロードできます。 (1) Rectangle構造体で指定された長方形を描画します。
public void DrawRectangle(Pen pen,Rectangle rect)
pen: ペンオブジェクト。線の色、幅、スタイルを決定します。 rect: 長方形を描画する Rectangle 構造体を表します。 例:
Rectangle rect = new Rectangle(0, 0, 80, 50);
(2) 幅と高さの座標ペアで指定された長方形を描画します。
public void DrawRectangle(Pen pen, int x, int y, int width, int height)
pen: ペンオブジェクト。線の色、幅、スタイルを決定します。 x: 描画される四角形の左上隅の x 座標。 y: 描画される四角形の左上隅の y 座標。 width と height はそれぞれ幅と高さを表します。 四角形を描画するサンプル コード:
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); }
Graphics クラスの Draw an ellipse
DrawEllipse メソッド。これはオーバーロードできます。主に、Rectangle 構造によって境界が指定された楕円を描画するために使用されます。 (1) Rectangle 構造体で指定された境界を持つ楕円を描画します。
public void DrawEllipse(Pen pen, Rectangle rect)
(2) 境界線で定義された楕円を描画します (境界線は高さと幅の座標のペアで指定されます)。
public void DrawEllipse(Pen pen, int x, int y, int width, int height)
楕円を描画するためのサンプルコード:
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); }
円弧の描画
Graphics クラスの DrawArc メソッドはオーバーロードできます。 (1) Rectangle 構造体で指定された楕円の一部を表す円弧を描きます。
public void DrawArc(Pen pen, Rectangle rect, float startAngle, float sweepAngle)
pen: ペンオブジェクト。線の色、幅、スタイルを決定します。 rect: 楕円の境界を定義する長方形構造。 startAngle: X 軸から円弧の開始点まで時計回りに測定した角度 (度単位)。スイープ角度: startAngle パラメータから円弧の終点まで時計回りに測定した角度 (度単位)。 (2) 幅と高さの座標のペアで指定された楕円の部分を表す円弧を描きます。
public void DrawArc(Pen pen, int x, int y, int width, int height, int startAngle, int sweepAngle)
円弧を描画するコード例:
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); }
多角形の描画
には、Graphics オブジェクト、Pen オブジェクト、Point (または PointF) オブジェクトの配列が必要です。 Graphics クラスは、DrawPolygon メソッドを提供します。Pen オブジェクトは、幅や色など、ポリゴンのレンダリングに使用されるライン属性を格納します。Point (または PointF) オブジェクト配列は、ポリゴンの個々の頂点を格納します。リロード可能。 (1) Point 構造体の集合で定義される多角形を描画します。
public void DrawPolygon(Pen pen, Point[] pints)
(2) PointF 構造体のセットによって定義される多角形を描画します。
public void DrawPolygon(Pen pen, PointF[] pints)
多角形を描画するためのコード例:
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); }
カーディナル スプラインの描画
カーディナル スプラインは、接続されて大きな曲線を形成する一連の個別の曲線です。点の配列と張力パラメータによって指定されるスプラインは、鋭い角や曲線の急峻さが突然変化することなく、配列の各点をスムーズに通過します。 (1) 指定された Point 構造のセットを通過するカーディナル スプラインを描画します。
public void DrawCurve(Pen pen, Point[] points)
(2) 指定された張力を使用して、指定された一連の Point 構造を通過するカーディナル スプラインを描画します。
public void DrawCurve(Pen pen, Point[] points, float tension)
tension: 0.0F 以上の値で、カーブの張力を指定します。 (3) 配列の先頭を基準としたオフセットから開始して、指定された PointF 構造体のセットを通るカーディナル スプラインを描画します。
りー
offset:从points参数数组中的第一个元素到曲线中起始点的偏移量。numberOfSegments:起始点之后要包含在曲线中的段数。 (4)使用指定张力,绘制经过一组指定Point结构的基数样条。
public void DrawCurve(Pen pen, Point[] points, int offset, int numberOfSegments, float tension)
绘制基数样条示例代码:
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); }
绘制贝赛尔样条
贝塞尔样条是由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)
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)
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); }
绘制图形路径
路径是通过组合直线、矩形和简单的曲线而形成的。在GDI+中,GraphicsPath对象允许将基本构造块收集到一个单元中,调用一次Graphics类的DrawPath方法,就可以绘制出整个单元的直线、矩形、多边形和曲线。
public void DrawPath(Pen pen, GraphicsPath path)
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); }
更多C# GDI+技术相关文章请关注PHP中文网!

C#.NETは、C#言語と.NETフレームワークの利点を組み合わせた強力な開発プラットフォームです。 1)エンタープライズアプリケーション、Web開発、ゲーム開発、モバイルアプリケーション開発で広く使用されています。 2)C#コードは中間言語にコンパイルされ、.NETランタイム環境によって実行され、ガベージコレクション、タイプの安全性、LINQクエリをサポートします。 3)使用の例には、基本的なコンソール出力と高度なLINQクエリが含まれます。 4)空の参照やタイプ変換エラーなどの一般的なエラーは、デバッガーとロギングを通じて解決できます。 5)パフォーマンスの最適化の提案には、非同期プログラミングとLINQクエリの最適化が含まれます。 6)競争にもかかわらず、C#.NETは継続的なイノベーションを通じて重要な地位を維持しています。

C#.NETの将来の傾向は、主にクラウドコンピューティング、マイクロサービス、AIおよび機械学習統合、およびクロスプラットフォーム開発の3つの側面に焦点を当てています。 1)クラウドコンピューティングとマイクロサービス:C#.NETは、Azureプラットフォームを介してクラウド環境のパフォーマンスを最適化し、効率的なマイクロサービスアーキテクチャの構築をサポートします。 2)AIと機械学習の統合:ML.NETライブラリの助けを借りて、C#開発者はアプリケーションに機械学習モデルを埋め込み、インテリジェントアプリケーションの開発を促進できます。 3)クロスプラットフォーム開発:.NetCoreおよび.Net5を介して、C#アプリケーションはWindows、Linux、およびMacOで実行され、展開範囲が拡大します。

C#.NET開発における最新の開発とベストプラクティスには、次のものが含まれます。1。非同期プログラミングは、アプリケーションの応答性を向上させ、Asyncを使用して非ブロッキングコードを簡素化し、キーワードを待ちます。 2。LINQは強力なクエリ関数を提供し、遅延した実行および式ツリーを介してデータを効率的に操作します。 3.パフォーマンスの最適化の提案には、非同期プログラミングの使用、LINQクエリの最適化、メモリの合理的な管理、コードの読みやすさとメンテナンスの改善、単体テストの書き込みが含まれます。

.NETを使用してアプリケーションを構築する方法は? .NETを使用してアプリケーションを構築することは、次の手順を通じて達成できます。1)C#言語やクロスプラットフォーム開発サポートを含む.NETの基本を理解します。 2)コンポーネントや.NETエコシステムの作業原則などのコア概念を学習します。 3)単純なコンソールアプリケーションから複雑なWebAPISおよびデータベース操作まで、基本的および高度な使用をマスターします。 4)構成やデータベース接続の問題など、一般的なエラーとデバッグ手法に精通している。 5)アプリケーションのパフォーマンスの最適化と非同期プログラミングやキャッシュなどのベストプラクティス。

C#は、エンタープライズレベルのアプリケーション、ゲーム開発、モバイルアプリケーション、Web開発で広く使用されています。 1)エンタープライズレベルのアプリケーションでは、C#がasp.netcoreにWebAPIを開発するためによく使用されます。 2)ゲーム開発では、C#がUnityエンジンと組み合わされて、ロールコントロールやその他の機能を実現します。 3)C#は、コードの柔軟性とアプリケーションのパフォーマンスを改善するために、多型と非同期プログラミングをサポートします。

C#と.NETは、Web、デスクトップ、モバイル開発に適しています。 1)Web開発では、ASP.Netcoreがクロスプラットフォーム開発をサポートしています。 2)デスクトップ開発では、さまざまなニーズに適したWPFとWINFORMSを使用します。 3)モバイル開発は、Xamarinを介したクロスプラットフォームアプリケーションを実現します。

C#.NETエコシステムは、開発者がアプリケーションを効率的に構築できるようにするための豊富なフレームワークとライブラリを提供します。 1.ASP.NETCOREは、高性能Webアプリケーションの構築に使用されます。2.EntityFrameWorkCoreは、データベース操作に使用されます。これらのツールの使用とベストプラクティスを理解することにより、開発者はアプリケーションの品質とパフォーマンスを向上させることができます。

c#.netアプリをAzureまたはAWSに展開する方法は?答えは、AzureAppServiceとAwselasticBeanStalkを使用することです。 1。Azureでは、AzureAppServiceとAzurePipelinesを使用して展開を自動化します。 2。AWSでは、Amazon ElasticBeanstalkとAwslambdaを使用して、展開とサーバーレス計算を実装します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ホットトピック









