Compartilhar via


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.

Consulte também

Outros recursos

Trabalhando com imagens, Bitmaps, ícones e metarquivos