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

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

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

カラーのアルファ値

カラーは、透明度であるアルファ値も設定できます。 Color.FromArgb(120,255,255,255) など。 FromArgb には 4 つのパラメータがあり、最初のパラメータはアルファ値を指定します。
最後の3つはカラー値RGBです。
アルファ値の範囲は 0 ~ 255 で、0 は完全に透明を意味し、255 は不透明を意味します。半透明のペイント ブラシの例を見てください:
Private void Formpaint (Object SENDER, PAINTEVENTARGS E) {
// パスを作成
GraphicsPath Path = New GraphicsPath (); Rectangle RECT = New Rectangle (0, 0, 100 , 100) ; Path.AddRectangle(rect); PathGradientBrush ブラシ = PathGradientBrush 255,255,255);
new Color[] { Color.FromArgb(120,0,0,0)};

ブラシの色がアルファの場合(transparent) 値が設定されていない場合、表示される文字列は見えません。

アンチエイリアシング

線のエイリアシングを除去するには、列挙型である Graphics クラスの SmoothingMode 属性メンバーを設定します。

アンチエイリアシングを設定するステートメントの例: e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;

エイリアシングを除去した後、線はより滑らかに見えます。 ripse(PEN、rect1); through ' through ‐ to ‐‐ ‐‐‐ , � ;
e.Graphics.DrawEllipse(pen, rect2) ;
SmoothingMode 列挙には、異なるレベルのアンチエイリアスを設定できるかどうかを設定できる他のメンバーもあります。

テキストのアンチエイリアス
表示されたテキストをアンチエイリアスするには、TextRenderingHint を設定するだけです。
サンプルコード:
private void formPaint(Object sender, PaintEventArgs e)
ing("ABCDEFGHIJKL", new Font("宋体", 15f), Brush, 0, 20); new Font("宋体", 15f), Brush, 0, 50);

}

area

C# ではこれらの API を呼び出すこともできるため、これらの関数を理解することが最善です。そして、そこにある概念の多くは似ています。たとえば、ウィンドウ ハンドル、エリア ハンドルなどです。

たとえば、Region クラスの GetHrgn 関数は、リージョン ハンドルを取得できます。

エリアとは何かをよりよく理解できるように、エリアとパスの関係についても説明します。

パスと長方形を使用して作成することができます。エリア。リージョンのコンストラクターを介して。

次の例では、長方形で 2 つの領域を作成し、それらを塗りつぶします。 V Private void Formpaint on2 = 新しい領域 (新しい長方形 (50,50,100,100));

Graphics.FillRegion(brush1,region1);

ブラシ 2 を作成し、領域 2 を塗りつぶすSolidBrush Brush2 = 新しい SolidBrush (Color.FromArgb(125, 0) , 255, 0)); (brush2 ,region2);

}

さらに、2 つの領域を結合することも 95 番目の関数 CombineRgn で説明されています。


CombineRgn API 関数の最後のパラメータ nCombineMode は 2 つのリージョンをマージする方法を指定するため、Region クラスのマージにも同様の機能が必要です。

マージ方法を示しますが、Region クラスはパラメータで直接異なる関数を呼び出しません。

たとえば、Region.Intersect 関数は RGN_AND であり、Region.Union はマージの RGN_OR メソッドです。 。 region1.Exclude は RGN_DIFF、

地域です ;>>>>>>>>>>>>>>API CombineRgn 関数から> >>>>>>>>>>>>>>>>>>>>>>>>> >>>>> ;>>>>>>>>>>>>>>>>>>>

RGN_AND 2つの領域の重複部分

RGN_OR 2つの領域を結合

RGN_DIFF hSrcRgn1の重複しない部分

RGN_XOR hSrcRgn1とhSrcRgn2の重複しない部分

RegionクラスにはComplementという関数もありますが、この関数で結合した領域が領域2の重ならない部分になります。

例を見てみましょう:

private void formPaint(Object sender, PaintEventArgs e)
0,0,100,100));
地域region2 =new Rectangle(new Rectangle(50,50,100,100));
//



設定ウィンドウ 表示領域:

たとえば、円形のウィンドウを表示するには、Form クラスで Region 属性のメンバーを指定するだけです:

public Form1()

InitializeComponent(); GraphicsPath パス = 新しい GraphicsPath ( );

this.Region = 地域;

}

Region.IsVisible は、点 (または四角形) が領域内にあるかどうかを決定します。
この例では、円形の領域が作成され、その領域は赤色で表示されます。 P PARIC PARTIAL CLASS FORM1: Form
// Public Solidbrush Norbrush = New Solidbrush (COLOR.GREEN); c SolidBrush Hovbrush = New Solidbrush (color.red)
// マウスが領域内にあるかどうかを示す
public Bool Hovflag = false;
// 円形の領域
ecomponent (); // 円形のパスを作成します path = new "円形のパスを作成します
新しいリージョン(パス);
件 // イベント処理を追加

This.paint+= Formpaint;
// マウスモバイルイベント
This.Mousemove+= Frommousemove
}}


targs E) {
if (hovflag)
{
e.Graphics.FillRegion( hovBrush、リージョン); . gion(norBrush、リージョン);
MouseEventArgs e)
グラフィックスグラフィックス. hovFlag != true)
hovFlag FillRegion (HOVBRUSH, リージョン)
// マウスは領域
を離れます。 if(region.isvisible(e.x、e.y)!= true && hovflag){
hovflag= false(norbrush、region);

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