Typy souřadnicových systémů

GDI+ používá tři souřadnicové prostory: svět, stránku a zařízení. Světové souřadnice jsou souřadnice použité k modelování konkrétního grafického světa a jsou souřadnice, které předáváte metodám v rozhraní .NET Framework. Souřadnice stránky odkazují na souřadnicový systém používaný kreslicí plochou, jako je formulář nebo ovládací prvek. Souřadnice zařízení jsou souřadnice používané fyzickým zařízením nakreslený na obrazovce nebo listu papíru. Když volání myGraphics.DrawLine(myPen, 0, 0, 160, 80)provedete, body, které předáte DrawLine metodě –(0, 0) a (160, 80)– jsou ve světovém souřadnicovém prostoru. Než GDI+ může nakreslit čáru na obrazovce, souřadnice procházejí posloupností transformací. Jedna transformace, označovaná jako světová transformace, převádí světové souřadnice na souřadnice stránek a další transformaci, která se nazývá transformace stránky, převádí souřadnice stránek na souřadnice zařízení.

Transformace a souřadnicové systémy

Předpokládejme, že chcete pracovat se souřadnicovým systémem, který má svůj původ v těle klientské oblasti, a ne s levým horním rohem. Řekněme například, že chcete, aby byl původ 100 pixelů od levého okraje klientské oblasti a 50 pixelů od horní části klientské oblasti. Následující obrázek znázorňuje takový souřadnicový systém.

Illustration of a coordinate system.

Při volání myGraphics.DrawLine(myPen, 0, 0, 160, 80)dostanete řádek zobrazený na následujícím obrázku.

Illustration of a line in the coordinate system.

Souřadnice koncových bodů řádku ve třech souřadnicových prostorech jsou následující:

Souřadnicový prostor Souřadnice koncových bodů
Svět (0, 0) až (160, 80)
Page (100, 50) až (260, 130)
Zařízení (100, 50) až (260, 130)

Všimněte si, že souřadnicový prostor stránky má svůj původ v levém horním rohu klientské oblasti; to bude vždy případ. Všimněte si také, že vzhledem k tomu, že měrná jednotka je pixel, jsou souřadnice zařízení stejné jako souřadnice stránky. Pokud nastavíte měrnou jednotku na něco jiného než pixely (například palce), souřadnice zařízení se budou lišit od souřadnic stránky.

Světová transformace, která mapuje souřadnice světa na souřadnice stránky, se uchovává ve Transform vlastnosti Graphics třídy. V předchozím příkladu je světová transformace překladem 100 jednotek ve směru x a 50 jednotek ve směru y. Následující příklad nastaví světovou transformaci objektu Graphics a pak tento objekt použije Graphics k vykreslení čáry zobrazené na předchozím obrázku:

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

Transformace stránky mapuje souřadnice stránky na souřadnice zařízení. Třída Graphics poskytuje PageUnit vlastnosti pro PageScale manipulaci s transformací stránky. Třída Graphics také poskytuje dvě vlastnosti DpiX jen pro čtení a DpiY, pro zkoumání vodorovné a svislé tečky na paleč zobrazovacího zařízení.

Vlastnost Graphics třídy můžete použít PageUnit k určení jiné měrné jednotky než pixel.

Poznámka:

Vlastnost nelze nastavit PageUnit na Worldhodnotu , protože se nejedná o fyzickou jednotku a způsobí výjimku.

Následující příklad nakreslí čáru od (0, 0) do (2, 1), kde bod (2, 1) je 2 palce vpravo a 1 palce dolů od bodu (0, 0):

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

Poznámka:

Pokud při vytváření pera nezadáte šířku pera, nakreslí předchozí příklad čáru, která je širokým palcem. Šířku pera můžete zadat v druhém argumentu konstruktoru Pen :

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

Pokud předpokládáme, že zobrazovací zařízení má 96 bodů na paleč ve vodorovném směru a 96 bodů na paleč ve svislém směru, koncové body řádku v předchozím příkladu mají následující souřadnice ve třech prostorech souřadnic:

Souřadnicový prostor Souřadnice koncových bodů
Svět (0, 0) až (2, 1)
Page (0, 0) až (2, 1)
Zařízení (0, 0) až (192, 96)

Všimněte si, že vzhledem k tomu, že původ prostoru souřadnic světa je v levém horním rohu klientské oblasti, souřadnice stránky jsou stejné jako souřadnice světa.

Transformace světa a stránek můžete kombinovat, abyste dosáhli různých efektů. Předpokládejme například, že chcete jako měrnou jednotku použít palce a chcete, aby byl původ souřadnicového systému 2 palce od levého okraje klientské oblasti a 1/2 palce od horní části klientské oblasti. Následující příklad nastaví svět a transformace stránky objektu Graphics a potom nakreslí čáru z (0, 0) na (2, 1):

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)

Následující obrázek znázorňuje spojnicový a souřadnicový systém.

Illustration of a line and coordinate system.

Pokud předpokládáme, že zobrazovací zařízení má 96 bodů na paleč ve vodorovném směru a 96 bodů na paleč ve svislém směru, koncové body řádku v předchozím příkladu mají následující souřadnice ve třech prostorech souřadnic:

Souřadnicový prostor Souřadnice koncových bodů
Svět (0, 0) až (2, 1)
Page (2, 0,5) až (4, 1,5)
Zařízení (192, 48) až (384, 144)

Viz také