Aracılığıyla paylaş


Koordinat Sistemi Türleri

GDI+ üç koordinat alanı kullanır: dünya, sayfa ve cihaz. Dünya koordinatları, belirli bir grafik dünyasını modellemek için kullanılan koordinatlardır ve .NET Framework'teki yöntemlere geçirdiğiniz koordinatlardır. Sayfa koordinatları, form veya denetim gibi çizim yüzeyi tarafından kullanılan koordinat sistemine başvurur. Cihaz koordinatları, üzerine çizilmekte olan fiziksel cihaz tarafından kullanılan ekran veya kağıt sayfası gibi koordinatlardır. çağrısı myGraphics.DrawLine(myPen, 0, 0, 160, 80)yaptığınızda, yöntemine DrawLine geçirdiğiniz noktalar ((0, 0) ve (160, 80)) dünya koordinat alanında yer alır. GDI+ ekranda çizgi çizmeden önce koordinatlar bir dizi dönüşümden geçer. Dünya dönüşümü olarak adlandırılan bir dönüşüm, dünya koordinatlarını sayfa koordinatlarına dönüştürür ve sayfa dönüştürme olarak adlandırılan başka bir dönüştürme, sayfa koordinatlarını cihaz koordinatlarına dönüştürür.

Dönüşümler ve Koordinat Sistemleri

Çıkış noktası sol üst köşe yerine istemci alanının gövdesinde olan bir koordinat sistemiyle çalışmak istediğinizi varsayalım. Örneğin, kaynağın istemci alanının sol kenarından 100 piksel ve istemci alanının üst kısmından 50 piksel olmasını istediğinizi varsayalım. Aşağıdaki çizimde böyle bir koordinat sistemi gösterilmektedir.

Illustration of a coordinate system.

çağrısı myGraphics.DrawLine(myPen, 0, 0, 160, 80)yaptığınızda, aşağıdaki çizimde gösterilen satırı alırsınız.

Illustration of a line in the coordinate system.

Üç koordinat alanında çizginizin uç noktalarının koordinatları aşağıdaki gibidir:

Koordinat alanı Uç nokta koordinatları
Dünya (0, 0) - (160, 80)
Sayfa (100, 50) - (260, 130)
Cihaz (100, 50) - (260, 130)

Sayfa koordinat alanının kaynağının istemci alanının sol üst köşesinde olduğunu unutmayın; Her zaman böyle olacaktır. Ayrıca ölçü birimi piksel olduğundan cihaz koordinatlarının sayfa koordinatlarıyla aynı olduğunu unutmayın. Ölçü birimini piksel dışında bir değere ayarlarsanız (örneğin, inç), cihaz koordinatları sayfa koordinatlarından farklı olur.

Dünya koordinatlarını sayfa koordinatlarına eşleyen dünya dönüşümü, sınıfının özelliğinde TransformGraphics tutulur. Yukarıdaki örnekte, dünya dönüşümü x yönünde 100 birim ve y yönünde 50 birim çeviridir. Aşağıdaki örnek, bir Graphics nesnenin dünya dönüştürmesini ayarlar ve ardından önceki şekilde gösterilen çizgiyi çizmek için bu Graphics nesneyi kullanır:

myGraphics.TranslateTransform(100, 50);
myGraphics.DrawLine(myPen, 0, 0, 160, 80);
myGraphics.TranslateTransform(100, 50)
myGraphics.DrawLine(myPen, 0, 0, 160, 80)

Sayfa dönüştürme, sayfa koordinatlarını cihaz koordinatlarıyla eşler. sınıfı, Graphics sayfa dönüştürmesini PageUnit işlemek için ve PageScale özelliklerini sağlar. sınıfı Graphics ayrıca görüntüleme cihazının inç başına yatay ve DpiYdikey noktaları incelemek için ve iki salt okunur özellik DpiX sağlar.

Piksel dışında bir ölçü birimi belirtmek için sınıfının özelliğini Graphics kullanabilirsinizPageUnit.

Dekont

Bu fiziksel bir birim olmadığından ve bir özel duruma neden olacağı için Worldözelliğini olarak ayarlayamazsınızPageUnit.

Aşağıdaki örnek , (0, 0) ile (2, 1) arasında bir çizgi çizer; burada nokta (2, 1) sağda 2 inç ve noktadan 1 inç aşağı (0, 0):

myGraphics.PageUnit = GraphicsUnit.Inch;
myGraphics.DrawLine(myPen, 0, 0, 2, 1);
myGraphics.PageUnit = GraphicsUnit.Inch
myGraphics.DrawLine(myPen, 0, 0, 2, 1)

Dekont

Kaleminizi oluştururken kalem genişliği belirtmezseniz, yukarıdaki örnekte bir inç genişliğinde bir çizgi çizilir. Oluşturucunun ikinci bağımsız değişkeninde Pen kalem genişliğini belirtebilirsiniz:

Pen myPen = new Pen(Color.Black, 1 / myGraphics.DpiX);
Dim myPen As New Pen(Color.Black, 1 / myGraphics.DpiX)

Görüntü cihazının yatay yönde inç başına 96 nokta ve dikey yönde inç başına 96 nokta olduğunu varsayarsak, önceki örnekteki çizginin uç noktaları üç koordinat alanında aşağıdaki koordinatlara sahiptir:

Koordinat alanı Uç nokta koordinatları
Dünya (0, 0) - (2, 1)
Sayfa (0, 0) - (2, 1)
Cihaz (0, 0) - (192, 96)

Dünya koordinat alanının kaynağı istemci alanının sol üst köşesinde olduğundan, sayfa koordinatlarının dünya koordinatlarıyla aynı olduğunu unutmayın.

Çeşitli efektler elde etmek için dünya ve sayfa dönüşümlerini birleştirebilirsiniz. Örneğin, ölçü birimi olarak inç kullanmak istediğinizi ve koordinat sisteminizin kaynağının istemci alanının sol kenarından 2 inç ve istemci alanının en üstünden 1/2 inç olmasını istediğinizi varsayalım. Aşağıdaki örnek bir Graphics nesnenin dünya ve sayfa dönüşümlerini ayarlar ve ardından (0, 0) ile (2, 1) arasında bir çizgi çizer:

myGraphics.TranslateTransform(2, 0.5f);
myGraphics.PageUnit = GraphicsUnit.Inch;
myGraphics.DrawLine(myPen, 0, 0, 2, 1);
myGraphics.TranslateTransform(2, 0.5F)
myGraphics.PageUnit = GraphicsUnit.Inch
myGraphics.DrawLine(myPen, 0, 0, 2, 1)

Aşağıdaki çizimde çizgi ve koordinat sistemi gösterilmektedir.

Illustration of a line and coordinate system.

Görüntü cihazının yatay yönde inç başına 96 nokta ve dikey yönde inç başına 96 nokta olduğunu varsayarsak, önceki örnekteki çizginin uç noktaları üç koordinat alanında aşağıdaki koordinatlara sahiptir:

Koordinat alanı Uç nokta koordinatları
Dünya (0, 0) - (2, 1)
Sayfa (2, 0,5) - (4, 1,5)
Cihaz (192, 48) - (384, 144)

Ayrıca bkz.