Compartilhar via


Como: Melhorar o desempenho, evitando o dimensionamento automático

GDI+pode dimensionar automaticamente uma imagem como desenhá-la, que diminuem o desempenho. Como alternativa, você pode controlar o dimensionamento da imagem, passando as dimensões do retângulo de destino para o DrawImage método.

Por exemplo, a seguinte chamada para o DrawImage método Especifica um canto superior esquerdo de (30, 50), mas não especifica um retângulo de destino.

e.Graphics.DrawImage(image, 50, 30) ' upper-left corner at (50, 30)
e.Graphics.DrawImage(image, 50, 30);  // upper-left corner at (50, 30)

Embora essa seja a versão mais fácil a DrawImage método em termos de número de argumentos necessários, não é necessariamente o mais eficiente. Se a resolução usada pelo GDI+ (geralmente 96 pontos por polegada) é diferente do que a resolução armazenada na Image objeto, em seguida, a DrawImage método dimensionará a imagem. Por exemplo, suponha que um Image o objeto tem uma largura de 216 pixels e um valor armazenado resolução horizontal de 72 pontos por polegada. Porque é de 216/72 3, DrawImage dimensionará a imagem para que ele tenha uma largura de 3 polegadas com resolução de 96 pontos por polegada. Ou seja, DrawImage exibirá uma imagem que tenha uma largura de 96 x 3 = 288 pixels.

Mesmo se a resolução de tela é diferente de 96 pontos por polegada, GDI+ provavelmente dimensionará a imagem como se a resolução de tela foram 96 pontos por polegada. Isso ocorre porque um GDI+ Graphics objeto é associado um contexto de dispositivo e quando GDI+ consultas no contexto de dispositivo para a resolução de tela, o resultado é geralmente 96, independentemente da resolução de tela real. Você pode evitar o dimensionamento automático, especificando o retângulo de destino no DrawImage método.

Exemplo

O exemplo a seguir desenha a mesma imagem duas vezes. No primeiro caso, a largura e altura do retângulo de destino não forem especificados e a imagem é redimensionada automaticamente. No segundo caso, a largura e altura (medido em pixels) do retângulo de destino são especificados para ser igual a largura e altura da imagem original. A ilustração a seguir mostra a imagem processada duas vezes.

Textura dimensionada

Dim image As New Bitmap("Texture.jpg")

e.Graphics.DrawImage(image, 10, 10)
e.Graphics.DrawImage(image, 120, 10, image.Width, image.Height)
Image image = new Bitmap("Texture.jpg");

e.Graphics.DrawImage(image, 10, 10);
e.Graphics.DrawImage(image, 120, 10, image.Width, image.Height);

Compilando o código

O exemplo anterior é projetado para uso com o Windows Forms e requer PaintEventArgs e, que é um parâmetro da Paint manipulador de eventos. Substitua Texture.jpg com um nome de imagem e o caminho são válidos em seu sistema.

Consulte também

Outros recursos

Imagens, Bitmaps e metarquivos

Trabalhando com imagens, Bitmaps, ícones e metarquivos