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 yöntemlere geçirdiğiniz koordinatlardır. Sayfa koordinatları, bir form veya denetim gibi bir çizim yüzeyi tarafından kullanılan koordinat sistemine başvurur. Cihaz koordinatları, bir ekran veya kağıt sayfası gibi, üzerine çizilmiş fiziksel cihaz tarafından kullanılan koordinatlardır. Çağrıyı yaptığınızda myGraphics.DrawLine(myPen, 0, 0, 160, 80) yöntemine geçirdiğiniz noktaları DrawLine — (0, 0) ve (160, 80) — World koordinat alanında olur. GDI+ ekranda çizgi çizmeden önce, koordinatlar bir dönüştürme sırasından 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üşümü olarak adlandırılan başka bir dönüşüm, sayfa koordinatlarını cihaz koordinatlarına dönüştürür.
Sistemleri dönüştürür ve koordine et
Sol üst köşede değil, istemci alanının gövdesinde kaynağına sahip bir koordinat sistemiyle çalışmak istediğinizi varsayalım. Örneğin, kaynağın, istemci alanının sol kenarından 100 piksel olmasını istediğinizi ve istemci alanının en üstünde 50 pikseli olduğunu varsayalım. Aşağıdaki çizimde bu tür bir koordinat sistemi gösterilmektedir.
Çağrıyı yaptığınızda myGraphics.DrawLine(myPen, 0, 0, 160, 80) Aşağıdaki çizimde gösterilen satırı alırsınız.
Üç koordinat alanındaki satırlarınızın uç noktaların koordinatları aşağıdaki gibidir:
| Alanı koordinat | Uç nokta koordinatları |
|---|---|
| Dünya | (0, 0)-(160, 80) |
| Sayfa | (100, 50)-(260, 130) |
| Cihaz | (100, 50)-(260, 130) |
Sayfa koordinat alanının, istemci alanının sol üst köşesinde bulunan kaynağı olduğunu unutmayın; Bu durum her zaman olur. Ayrıca, ölçü birimi piksel olduğundan, cihaz koordinatları 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ı olacaktır.
Dünya koordinatlarını sayfa koordinatlarına eşleyen dünya dönüştürmesi, Transform sınıfının özelliğinde tutulur Graphics . Yukarıdaki örnekte, World Transformation, y yönünde x Direction ve 50 birimlerindeki çeviri 100 birimleridir. Aşağıdaki örnek, bir nesnenin Dünya dönüşümünü belirler Graphics ve ardından Graphics Önceki şekilde gösterilen satırı çizmek için bu 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ına eşler. GraphicsSınıfı, PageUnitPageScale sayfa dönüşümünü işlemek için ve özelliklerini sağlar. GraphicsSınıfı ayrıca, iki salt okuma özelliği de sağlar DpiX ve DpiY görüntüleme cihazının yatay ve dikey noktaların incelenmesidir.
PageUnitSınıfının özelliğini, Graphics pikselin dışında bir ölçü birimi belirtmek için kullanabilirsiniz.
Not
PageUnitWorld Bu bir fiziksel birim olmadığından ve bir özel duruma neden olacağı için özelliğini olarak ayarlayamazsınız.
Aşağıdaki örnek (0, 0) ile (2, 1) arasında bir çizgi çizer, burada nokta (2, 1), nokta (0, 0) ile sağ ve 1 inç arasında 2 ' dir:
myGraphics.PageUnit = GraphicsUnit.Inch;
myGraphics.DrawLine(myPen, 0, 0, 2, 1);
myGraphics.PageUnit = GraphicsUnit.Inch
myGraphics.DrawLine(myPen, 0, 0, 2, 1)
Not
Kaleminizi oluştururken bir kalem genişliği belirtmezseniz, yukarıdaki örnek bir inç genişliğinde bir çizgi çizer. Oluşturucunun ikinci bağımsız değişkeninde kalem genişliğini belirtebilirsiniz Pen :
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 96 nokta ve dikey yönde 96 nokta/inç olduğunu varsaydığımızda, önceki örnekteki satırın uç noktaları üç koordinat alanında aşağıdaki koordinatlara sahiptir:
| Alanı koordinat | 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ı dünyanın koordinatlarıyla aynı olur.
Çeşitli etkilere ulaşmak için dünya ve sayfa dönüştürmelerini 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 cm ve istemci alanının en üstünden 1/2 inç olmasını istediğinizi varsayalım. Aşağıdaki örnek, bir nesnenin Dünya ve sayfa dönüştürmelerini ayarlar Graphics ve (0, 0) öğesinden (2, 1) 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.
Görüntü cihazının yatay yönde 96 nokta ve dikey yönde 96 nokta/inç olduğunu varsaydığımızda, önceki örnekteki satırın uç noktaları üç koordinat alanında aşağıdaki koordinatlara sahiptir:
| Alanı koordinat | Uç nokta koordinatları |
|---|---|
| Dünya | (0, 0)-(2, 1) |
| Sayfa | (2, 0,5)-(4, 1,5) |
| Cihaz | (192, 48)-(384, 144) |