Sdílet prostřednictvím


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, na které se kreslí, jako je obrazovka nebo list papíru. Když provedete volání myGraphics.DrawLine(myPen, 0, 0, 160, 80), body, které předáte metodě DrawLine(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 počátek ve středu klientské oblasti, než v jeho levém horním rohu. Ř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.

Ilustrace souřadnicového systému

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

Ilustrace čáry v souřadnicovém systému

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)
Stránka (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, je obsažena ve vlastnosti Transform třídy Graphics. V předchozím příkladu světová transformace představuje posun o 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 pomocí tohoto Graphics objektu nakreslete čáru zobrazenou 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 vlastnosti PageUnit a PageScale pro manipulaci s transformací stránky. Třída Graphics poskytuje také dvě vlastnosti pouze pro čtení, DpiX a DpiY, pro zkoumání vodorovných a svislých teček na palec zobrazovacího zařízení.

Pomocí vlastnosti PageUnit třídy Graphics můžete určit jinou jednotku měření než pixel.

Poznámka:

Vlastnost PageUnit nelze nastavit na World, 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, nakreslí předchozí příklad čáru, která je široká jeden palec. Šíř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 palec ve vodorovném směru a 96 bodů na palec ve svislém směru, koncové body úsečky v předchozím příkladu mají následující souřadnice v rámci tří souřadnicových systémů.

Souřadnicový prostor Souřadnice koncových bodů
Svět (0, 0) až (2, 1)
Stránka (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 pak 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.

Ilustrace čáry a souřadnicového systému

Pokud předpokládáme, že zobrazovací zařízení má 96 bodů na palec ve vodorovném směru a 96 bodů na palec ve svislém směru, koncové body úsečky v předchozím příkladu mají následující souřadnice v rámci tří souřadnicových systémů.

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

Viz také