Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Graphics osztály a GDI+ középpontjában áll. Ha bármit meg szeretne rajzolni, lekérjük a Graphics objektumot, beállítjuk annak tulajdonságait, és meghívjuk a metódusait DrawLine, DrawImage, DrawStringés hasonlók).
Az alábbi példa egy DrawRectangle objektum Graphics metódusát hívja meg. A DrawRectangle metódusnak átadott első argumentum egy Pen objektum.
Dim graphics As Graphics = e.Graphics
Dim pen As New Pen(Color.Blue) ' Opaque blue
graphics.DrawRectangle(pen, 10, 10, 200, 100)
Graphics graphics = e.Graphics;
Pen pen = new Pen(Color.Blue); // Opaque blue
graphics.DrawRectangle(pen, 10, 10, 200, 100);
Grafikus állapot
A Graphics objektumok nem csak rajzmetódusokat biztosítanak, például DrawLine és DrawRectangle. Egy Graphics objektum is fenntartja a grafikus állapotot, amely a következő kategóriákra osztható:
Minőségi beállítások
Transzformációk
Kivágási régió
Minőségi beállítások
A Graphics objektumok számos olyan tulajdonsággal rendelkeznek, amelyek befolyásolják a rajzolt elemek minőségét. Beállíthatja például a TextRenderingHint tulajdonságot, hogy megszabja a szövegre alkalmazott antialiasing típusát (ha van ilyen). A minőséget befolyásoló egyéb tulajdonságok a következők: SmoothingMode, CompositingMode, CompositingQualityés InterpolationMode.
Az alábbi példa két ellipszist rajzol, egyet AntiAlias simítási móddal és egyet pedig a simítási mód HighSpeed-gyel.
Dim graphics As Graphics = e.Graphics
Dim pen As New Pen(Color.Blue)
graphics.SmoothingMode = SmoothingMode.AntiAlias
graphics.DrawEllipse(pen, 0, 0, 200, 100)
graphics.SmoothingMode = SmoothingMode.HighSpeed
graphics.DrawEllipse(pen, 0, 150, 200, 100)
Graphics graphics = e.Graphics;
Pen pen = new Pen(Color.Blue);
graphics.SmoothingMode = SmoothingMode.AntiAlias;
graphics.DrawEllipse(pen, 0, 0, 200, 100);
graphics.SmoothingMode = SmoothingMode.HighSpeed;
graphics.DrawEllipse(pen, 0, 150, 200, 100);
Transzformációk
A Graphics objektum két átalakítást (világot és oldalt) tart fenn, amelyek az adott Graphics objektum által rajzolt összes elemre érvényesek. Minden affine transzformáció tárolható a világ transzformációjában. Affine átalakítások közé tartozik a skálázás, forgatás, tükrözés, ferdítés és fordítás. Az oldalátalakítás használható skálázáshoz és az egységek módosításához (például képpontról hüvelykre). További információ: Koordinátarendszerek és átalakítások.
Az alábbi példa egy Graphics objektum világát és lapátalakításait állítja be. A világ átalakulása 30 fokos rotációra van állítva. A lapátalakítás úgy van beállítva, hogy a második DrawEllipse átadott koordináták képpontok helyett milliméterként legyenek kezelve. A kód két azonos hívást indít a DrawEllipse metódushoz. A világátalakítás az első DrawEllipse hívásra lesz alkalmazva, és mindkét átalakítás (világ és oldal) a második DrawEllipse hívásra lesz alkalmazva.
Dim graphics As Graphics = e.Graphics
Dim pen As New Pen(Color.Red)
graphics.ResetTransform()
graphics.RotateTransform(30) ' world transformation
graphics.DrawEllipse(pen, 0, 0, 100, 50)
graphics.PageUnit = GraphicsUnit.Millimeter ' page transformation
graphics.DrawEllipse(pen, 0, 0, 100, 50)
Graphics graphics = e.Graphics;
Pen pen = new Pen(Color.Red);
graphics.ResetTransform();
graphics.RotateTransform(30); // world transformation
graphics.DrawEllipse(pen, 0, 0, 100, 50);
graphics.PageUnit = GraphicsUnit.Millimeter; // page transformation
graphics.DrawEllipse(pen, 0, 0, 100, 50);
Az alábbi ábrán a két ellipszis látható. Vegye figyelembe, hogy a 30 fokos forgatás a koordinátarendszer eredetére vonatkozik (az ügyfélterület bal felső sarkára), nem pedig az ellipszisek középpontjaira. Azt is vegye figyelembe, hogy az 1-es tollszélesség az első ellipszisnél 1 képpontot, a második ellipszisnél pedig 1 millimétert jelent.
Kivágási régió
A Graphics objektumok olyan kivágási régiót tartanak fenn, amely az adott Graphics objektum által rajzolt összes elemre vonatkozik. A kivágási régiót a SetClip metódus meghívásával állíthatja be.
Az alábbi példa egy plusz alakú régiót hoz létre két téglalap összevonásával. Ez a régió egy Graphics objektum kivágási régiójaként van kijelölve. Ezután a kód két sort rajzol, amelyek a kivágási régió belső területére korlátozódnak.
Dim graphics As Graphics = e.Graphics
' Opaque red, width 5
Dim pen As New Pen(Color.Red, 5)
' Opaque aqua
Dim brush As New SolidBrush(Color.FromArgb(255, 180, 255, 255))
' Create a plus-shaped region by forming the union of two rectangles.
Dim [region] As New [Region](New Rectangle(50, 0, 50, 150))
[region].Union(New Rectangle(0, 50, 150, 50))
graphics.FillRegion(brush, [region])
' Set the clipping region.
graphics.SetClip([region], CombineMode.Replace)
' Draw two clipped lines.
graphics.DrawLine(pen, 0, 30, 150, 160)
graphics.DrawLine(pen, 40, 20, 190, 150)
Graphics graphics = e.Graphics;
// Opaque red, width 5
Pen pen = new Pen(Color.Red, 5);
// Opaque aqua
SolidBrush brush = new SolidBrush(Color.FromArgb(255, 180, 255, 255));
// Create a plus-shaped region by forming the union of two rectangles.
Region region = new Region(new Rectangle(50, 0, 50, 150));
region.Union(new Rectangle(0, 50, 150, 50));
graphics.FillRegion(brush, region);
// Set the clipping region.
graphics.SetClip(region, CombineMode.Replace);
// Draw two clipped lines.
graphics.DrawLine(pen, 0, 30, 150, 160);
graphics.DrawLine(pen, 40, 20, 190, 150);
Az alábbi ábrán a levágott vonalak láthatók:
Lásd még
.NET Desktop feedback