Bir Grafik Nesnesinin Durumunu Yönetme
sınıfı, Graphics bu sınıfın GDI+. Herhangi bir şey çizmek için bir nesnesi elde eder, özelliklerini ayarlar ve yöntemini Graphics DrawLine , , ve DrawImage DrawString benzerini çağırabilirsiniz).
Aşağıdaki örnek bir DrawRectangle nesnenin yöntemini Graphics çağıran. yöntemine geçirilen ilk bağımsız DrawRectangle değişken bir Pen nesnesidir.
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);
Grafik Durumu
Bir Graphics nesne, ve gibi çizim yöntemlerini sağlamaktan daha fazlasını DrawLine DrawRectangle yapar. Nesne Graphics ayrıca grafik durumunu da sürdürür ve bu durum aşağıdaki kategorilere ayrılabilir:
Kalite ayarları
Dönüşümler
Kırpma bölgesi
Kalite Ayarlar
Bir Graphics nesne, çizilen öğelerin kalitesini etkileyen çeşitli özelliklere sahiptir. Örneğin, özelliği, TextRenderingHint metne uygulanan antialiasing türünü (varsa) belirterek belirtebilirsiniz. Kalitesini etkileyen diğer özellikler SmoothingMode , CompositingMode , ve CompositingQuality InterpolationMode özellikleridir.
Aşağıdaki örnek, biri düzleştirme modu olarak ayarlanmış ve biri de düzleştirme modu olarak ayarlanmış iki AntiAlias üç nokta HighSpeed çizer:
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);
Dönüşümler
Nesne, Graphics bu nesne tarafından çizilen tüm öğelere uygulanan iki dönüştürme (dünya ve sayfa) Graphics sürdürür. Tüm affine dönüşümleri dünya dönüşümünde depolanmış olabilir. Affine dönüştürmeleri ölçeklendirmeyi, döndürmeyi, yansıtmayı, skewing'i ve çeviriyi içerir. Sayfa dönüştürme, ölçeklendirme ve birimleri değiştirmek (örneğin pikselden inçe) için kullanılabilir. Daha fazla bilgi için bkz. Koordinat Sistemleri ve Dönüşümler.
Aşağıdaki örnek, bir nesnenin dünya ve sayfa dönüşümlerini Graphics ayarlar. Dünya dönüşümü 30 derece döndürmeye ayarlanır. Sayfa dönüşümü, ikinciye geçirilen koordinatların piksel yerine milimetre DrawEllipse olarak kabul edilmesi için ayarlanır. Kod, yöntemine iki aynı çağrı DrawEllipse yapar. Dünya dönüşümü ilk çağrıya DrawEllipse uygulanır ve her iki dönüştürme de (dünya ve sayfa) ikinci çağrıya DrawEllipse uygulanır.
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);
Aşağıdaki çizimde iki üç nokta gösterilmiştir. 30 derece döndürmenin üç noktanın merkezleriyle ilgili değil, koordinat sisteminin kaynağı hakkında olduğunu (istemci alanı sol üst köşesi) unutmayın. Ayrıca, 1 kalem genişliğinin ilk üç nokta için 1 piksel, ikinci üç nokta için ise 1 milimetre anlamına geldiğini unutmayın.

Kırpma Bölgesi
Bir Graphics nesne, o nesne tarafından çizilen tüm öğeler için geçerli olan bir kırpma bölgesi Graphics sağlar. yöntemini çağırarak kırpma bölgelerini SetClip ayarlayabilirsiniz.
Aşağıdaki örnek, iki dikdörtgenin birlemini şekillendirerek artı şeklinde bir bölge oluşturur. Bu bölge, bir nesnenin kırpma bölgesi olarak Graphics belirlenmiştir. Ardından kod, kırpma bölgesi iç bölgesiyle kısıtlanmış iki satır çizer.
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);
Aşağıdaki çizimde kırpılmış çizgiler gösterilmiştir:
