Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
GDI+ używa trzech współrzędnych: świata, strony i urządzenia. Współrzędne świata to współrzędne używane do modelowania określonego świata graficznego i są współrzędnymi przekazywanymi do metod w programie .NET Framework. Współrzędne strony odnoszą się do układu współrzędnych używanych przez powierzchnię do rysowania, na przykład formularz lub element sterujący. Współrzędne urządzenia to współrzędne wykorzystywane przez urządzenie fizyczne do rysowania, na przykład na ekranie lub arkuszu papieru. Podczas wykonywania wywołania myGraphics.DrawLine(myPen, 0, 0, 160, 80)
punkty przekazywane do metody DrawLine —(0, 0)
i (160, 80)
— znajdują się w przestrzeni współrzędnej świata. Zanim funkcja GDI+ będzie mogła narysować linię na ekranie, współrzędne przechodzą przez sekwencję przekształceń. Jedna transformacja, nazywana transformacją świata, konwertuje współrzędne świata na współrzędne strony, a druga transformacja, nazywana transformacją strony, konwertuje współrzędne strony na współrzędne urządzenia.
Przekształcenia i systemy współrzędnych
Załóżmy, że chcesz pracować z układem współrzędnych, który ma swoje pochodzenie w treści obszaru klienta, a nie w lewym górnym rogu. Załóżmy na przykład, że źródło ma mieć wartość 100 pikseli od lewej krawędzi obszaru klienta i 50 pikseli w górnej części obszaru klienta. Na poniższej ilustracji przedstawiono taki układ współrzędnych.
Po wykonaniu połączenia myGraphics.DrawLine(myPen, 0, 0, 160, 80)
zostanie wyświetlony wiersz pokazany na poniższej ilustracji.
Współrzędne punktów końcowych linii w trzech odstępach współrzędnych są następujące:
Przestrzeń współrzędnych | Współrzędne punktu końcowego |
---|---|
Świat | (0, 0) do (160, 80) |
Strona | (100, 50) do (260, 130) |
Urządzenie | (100, 50) do (260, 130) |
Zwróć uwagę, że układ współrzędnych strony ma swoje źródło w lewym górnym rogu obszaru klienta; tak jest zawsze. Należy również pamiętać, że ponieważ jednostka miary jest pikselem, współrzędne urządzenia są takie same jak współrzędne strony. Jeśli ustawisz jednostkę miary na inną niż piksele (na przykład cala), współrzędne urządzenia będą się różnić od współrzędnych strony.
Transformacja świata, która mapuje współrzędne świata na współrzędne strony, jest przechowywana we właściwości Transform klasy Graphics. W poprzednim przykładzie przekształcenie przestrzeni to przesunięcie o 100 jednostek w kierunku x i 50 jednostek w kierunku y. W poniższym przykładzie najpierw ustawiono transformację świata obiektu Graphics, a następnie użyto obiektu Graphics do narysowania linii pokazanej na wcześniejszej ilustracji.
myGraphics.TranslateTransform(100, 50);
myGraphics.DrawLine(myPen, 0, 0, 160, 80);
myGraphics.TranslateTransform(100, 50)
myGraphics.DrawLine(myPen, 0, 0, 160, 80)
Przekształcenie strony mapuje jej współrzędne na współrzędne urządzenia. Klasa Graphics udostępnia właściwości PageUnit i PageScale do manipulowania transformacją strony. W klasie Graphics dostępne są również dwie właściwości tylko do odczytu, DpiX i DpiY, do sprawdzania poziomej i pionowej liczby punktów na cal urządzenia wyświetlającego.
Możesz użyć właściwości PageUnit klasy Graphics, aby określić jednostkę miary inną niż piksel.
Uwaga / Notatka
Nie można ustawić właściwości PageUnit na World, ponieważ nie jest to jednostka fizyczna i spowoduje wyjątek.
Poniższy przykład rysuje linię z (0, 0) do (2, 1), gdzie punkt (2, 1) wynosi 2 cale z prawej i 1 cala w dół od punktu (0, 0):
myGraphics.PageUnit = GraphicsUnit.Inch;
myGraphics.DrawLine(myPen, 0, 0, 2, 1);
myGraphics.PageUnit = GraphicsUnit.Inch
myGraphics.DrawLine(myPen, 0, 0, 2, 1)
Uwaga / Notatka
Jeśli nie określisz szerokości pióra podczas konstruowania pióra, powyższy przykład narysuje linię o szerokości jednego cala. Szerokość pióra można określić w drugim argumencie dla konstruktora Pen.
Pen myPen = new Pen(Color.Black, 1 / myGraphics.DpiX);
Dim myPen As New Pen(Color.Black, 1 / myGraphics.DpiX)
Jeśli zakładamy, że urządzenie wyświetlające ma 96 kropek na cal w kierunku poziomym i 96 kropek na cal w kierunku pionowym, punkty końcowe linii w poprzednim przykładzie mają następujące współrzędne w trzech odstępach współrzędnych:
Przestrzeń współrzędnych | Współrzędne punktu końcowego |
---|---|
Świat | (0, 0) do (2, 1) |
Strona | (0, 0) do (2, 1) |
Urządzenie | (0, 0) do (192, 96) |
Należy pamiętać, że ponieważ pochodzenie przestrzeni współrzędnej świata znajduje się w lewym górnym rogu obszaru klienta, współrzędne strony są takie same jak współrzędne świata.
Możesz połączyć przekształcenia świata i stron w celu osiągnięcia różnych efektów. Załóżmy na przykład, że chcesz użyć cala jako jednostki miary i chcesz, aby początek układu współrzędnych był 2 cali od lewej krawędzi obszaru klienta i 1/2 cala od góry obszaru klienta. Poniższy przykład ustawia przekształcenia świata i strony obiektu Graphics, a następnie rysuje wiersz z (0, 0) do (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)
Poniższa ilustracja przedstawia układ linii i współrzędnych.
Jeśli zakładamy, że urządzenie wyświetlające ma 96 kropek na cal w kierunku poziomym i 96 kropek na cal w kierunku pionowym, punkty końcowe linii w poprzednim przykładzie mają następujące współrzędne w trzech odstępach współrzędnych:
Przestrzeń współrzędnych | Współrzędne punktu końcowego |
---|---|
Świat | (0, 0) do (2, 1) |
Strona | (2, 0,5) do (4, 1,5) |
Urządzenie | (192, 48) do (384, 144) |
Zobacz także
.NET Desktop feedback