Como: Girar, refletir e inclinar imagens
Você pode girar, refletir e inclinar uma imagem especificando pontos de destino para os cantos superior esquerdo, superior direito e inferior esquerdo da imagem original.Pontos de três destino determinam uma transformação afim mapeia a imagem original retangular para um paralelogramo.
Exemplo
Por exemplo, suponha que a imagem original é um retângulo com canto superior esquerdo no (0, 0), o canto superior direito em (100, 0) e o canto inferior esquerdo em (0, 50).Agora suponha que você mapear sistema autônomo três aponta para pontos de destino da seguinte maneira.
Ponto original |
Ponto de destino |
---|---|
Superior-esquerdo (0, 0) |
(200, 20) |
Superior-direito (100, 0) |
(110, 100) |
Inferior esquerda (0, 50) |
(250, 30) |
A ilustração a seguir mostra a imagem original e a imagem mapeado para o paralelogramo.A imagem original tem sido inclinada, refletida, girada e traduzida.O eixo x na borda superior da imagem original é mapeado para a linha que é executado através de (200, 20) e (110, 100).O eixo y ao longo da borda esquerda da imagem original é mapeado para a linha que percorre (20, 200) e (250, 30).
A ilustração a seguir mostra uma transformação semelhante aplicada a uma imagem fotográfica.
A ilustração a seguir mostra uma transformação semelhante aplicada a um metarquivo.
O exemplo a seguir produz imagens mostradas na ilustração primeira.
' New Point(200, 20) = destination for upper-left point of original
' New Point(110, 100) = destination for upper-right point of original
' New Point(250, 30) = destination for lower-left point of original
Dim destinationPoints As Point() = { _
New Point(200, 20), _
New Point(110, 100), _
New Point(250, 30)}
Dim image As New Bitmap("Stripes.bmp")
' Draw the image unaltered with its upper-left corner at (0, 0).
e.Graphics.DrawImage(image, 0, 0)
' Draw the image mapped to the parallelogram.
e.Graphics.DrawImage(image, destinationPoints)
Point[] destinationPoints = {
new Point(200, 20), // destination for upper-left point of
// original
new Point(110, 100), // destination for upper-right point of
// original
new Point(250, 30)}; // destination for lower-left point of
// original
Image image = new Bitmap("Stripes.bmp");
// Draw the image unaltered with its upper-left corner at (0, 0).
e.Graphics.DrawImage(image, 0, 0);
// Draw the image mapped to the parallelogram.
e.Graphics.DrawImage(image, destinationPoints);
Compilando o código
The preceding example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler.Certifique-se de substituir Stripes.bmp com o caminho para uma imagem válida no seu sistema.