Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O GDI+ usa três espaços de coordenadas: mundo, página e dispositivo. As coordenadas mundiais são as coordenadas usadas para modelar um determinado mundo gráfico e são as coordenadas que você passa para métodos no .NET Framework. Coordenadas de página referem-se ao sistema de coordenadas usado por uma superfície de desenho, como um formulário ou controle. As coordenadas do dispositivo são as coordenadas usadas pelo dispositivo físico que está sendo desenhado, como uma tela ou uma folha de papel. Quando você faz a chamada myGraphics.DrawLine(myPen, 0, 0, 160, 80)
, os pontos que você passa para o DrawLine método(0, 0)
e (160, 80)
estão no espaço de coordenadas do mundo. Antes que o GDI+ possa desenhar a linha na tela, as coordenadas passam por uma sequência de transformações. Uma transformação, chamada de transformação mundial, converte coordenadas mundiais em coordenadas de página e outra transformação, chamada transformação de página, converte coordenadas de página em coordenadas do dispositivo.
Transformações e sistemas de coordenadas
Suponha que você queira trabalhar com um sistema de coordenadas que tenha sua origem no corpo da área do cliente em vez do canto superior esquerdo. Digamos, por exemplo, que você deseja que a origem seja de 100 pixels da borda esquerda da área do cliente e 50 pixels da parte superior da área do cliente. A ilustração a seguir mostra esse sistema de coordenadas.
Ao fazer a chamada myGraphics.DrawLine(myPen, 0, 0, 160, 80)
, você obtém a linha mostrada na ilustração a seguir.
As coordenadas dos pontos de extremidade da linha nos três espaços de coordenadas são as seguintes:
Espaço de coordenadas | Coordenadas de ponto de extremidade |
---|---|
Mundo | (0, 0) a (160, 80) |
Página | (100, 50) a (260, 130) |
Dispositivo | (100, 50) a (260, 130) |
Observe que o espaço de coordenadas da página tem sua origem no canto superior esquerdo da área do cliente; esse sempre será o caso. Observe também que, como a unidade de medida é o pixel, as coordenadas do dispositivo são as mesmas que as coordenadas da página. Se você definir a unidade de medida como algo diferente de pixels (por exemplo, polegadas), as coordenadas do dispositivo serão diferentes das coordenadas da página.
A transformação mundial, que mapeia coordenadas mundiais para coordenadas de página, é mantida na Transform propriedade da Graphics classe. No exemplo anterior, a transformação mundial é uma tradução de 100 unidades na direção x e 50 unidades na direção y. O exemplo a seguir define a transformação de mundo de um Graphics objeto e, em seguida, usa esse Graphics objeto para desenhar a linha mostrada na figura anterior:
myGraphics.TranslateTransform(100, 50);
myGraphics.DrawLine(myPen, 0, 0, 160, 80);
myGraphics.TranslateTransform(100, 50)
myGraphics.DrawLine(myPen, 0, 0, 160, 80)
A transformação de página mapeia coordenadas de página para coordenadas do dispositivo. A classe Graphics fornece as propriedades PageUnit e PageScale para manipular a transformação da página. A Graphics classe também fornece duas propriedades, DpiX e DpiY, somente leitura, para examinar os pontos por polegada horizontais e verticais do dispositivo de visualização.
Você pode usar a PageUnit propriedade da Graphics classe para especificar uma unidade de medida diferente do pixel.
Observação
Você não pode definir a PageUnit propriedade como World, pois esta não é uma unidade física e causará uma exceção.
O exemplo a seguir desenha uma linha de (0, 0) para (2, 1), onde o ponto (2, 1) é de 2 polegadas para a direita e 1 polegada para baixo do ponto (0, 0):
myGraphics.PageUnit = GraphicsUnit.Inch;
myGraphics.DrawLine(myPen, 0, 0, 2, 1);
myGraphics.PageUnit = GraphicsUnit.Inch
myGraphics.DrawLine(myPen, 0, 0, 2, 1)
Observação
Se você não especificar uma largura de caneta ao construir sua caneta, o exemplo anterior desenhará uma linha de uma polegada de largura. Você pode especificar a largura da caneta no segundo argumento para o Pen construtor:
Pen myPen = new Pen(Color.Black, 1 / myGraphics.DpiX);
Dim myPen As New Pen(Color.Black, 1 / myGraphics.DpiX)
Se assumirmos que o dispositivo de exibição tem 96 pontos por polegada na direção horizontal e 96 pontos por polegada na direção vertical, os pontos de extremidade da linha no exemplo anterior têm as seguintes coordenadas nos três espaços de coordenadas:
Espaço de coordenadas | Coordenadas de ponto de extremidade |
---|---|
Mundo | (0, 0) a (2, 1) |
Página | (0, 0) a (2, 1) |
Dispositivo | (0, 0) a (192, 96) |
Observe que, como a origem do espaço de coordenadas do mundo está no canto superior esquerdo da área do cliente, as coordenadas da página são iguais às coordenadas do mundo.
Você pode combinar o mundo e as transformações de página para obter uma variedade de efeitos. Por exemplo, suponha que você queira usar polegadas como a unidade de medida e deseja que a origem do sistema de coordenadas esteja a 2 polegadas da borda esquerda da área do cliente e 1/2 polegada da parte superior da área do cliente. O exemplo a seguir define o mundo e as transformações de página de um Graphics objeto e desenha uma linha de (0, 0) para (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)
A ilustração a seguir mostra a linha e o sistema de coordenadas.
Se assumirmos que o dispositivo de exibição tem 96 pontos por polegada na direção horizontal e 96 pontos por polegada na direção vertical, os pontos de extremidade da linha no exemplo anterior têm as seguintes coordenadas nos três espaços de coordenadas:
Espaço de coordenadas | Coordenadas de ponto de extremidade |
---|---|
Mundo | (0, 0) a (2, 1) |
Página | (2, 0,5) a (4, 1,5) |
Dispositivo | (192, 48) para (384, 144) |
Consulte também
.NET Desktop feedback