Compartilhar via


Como: Melhorar o desempenho, evitar a escala automático

GDI+ pode dimensionar automaticamente uma imagem ao 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 telefonar seguinte para o DrawImage método Especifica um canto superior esquerdo de (50, 30), 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 do DrawImage método em termos de número de argumentos necessários, não é necessariamente o mais eficiente. Se a resolução usada por GDI+ (geralmente 96 pontos por mover-se pouco a pouco) é diferente da resolução armazenada na Image objeto, o DrawImage método dimensionará a imagem. Por exemplo, suponha que um Image o objeto tem uma largura de 216 pixels e o valor armazenado resolução horizontal 72 pontos por mover-se pouco a pouco. Como 216/72 é 3, DrawImage dimensionará a imagem para que ele tenha uma largura de 7,62 cm em uma resolução de 96 pontos por mover-se pouco a pouco. Ou seja, DrawImage exibirá uma imagem que tenha uma largura de 288 x 3 = 96 pixels.

Mesmo se resolução da tela é diferente do 96 pontos por mover-se pouco a pouco, GDI+ provavelmente dimensionará a imagem sistema autônomo se resolução da tela foram 96 pontos por mover-se pouco a pouco. That is because a GDI+ Graphics object is associated with a device context, and when GDI+ queries the device context for the screen resolution, the result is usually 96, regardless of the actual screen resolution.Você pode evitar o dimensionamento automático, especificando o retângulo de destino na 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 estão especificados e a imagem é dimensionada automaticamente.No segundo caso, a largura e altura (medido em pixels) do retângulo de destino são especificados para ser o mesmo sistema autônomo a largura e altura da imagem original.A ilustração a seguir mostra a imagem processada duas vezes.

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

The preceding example is designed for use with Windows Forms, and it requires PaintEventArgs e, which is a parameter of the Paint event handler.Substitua textura.jpg por um nome de imagem e caminho válido no seu sistema.

Consulte também

Outros recursos

Imagens, Bitmaps e metarquivos

Trabalhando com imagens, Bitmaps, ícones e metarquivos