Pergunta

Então, eu li que StretchBlt pode espelhar as imagens horizontalmente e / ou verticalmente, negando a nWidthSrc / Dest e nHeightSrc / parâmetros Dest. Gostaria que esta funcionalidade sem a sobrecarga de um StretchBlt desempenho. Eu tentei a mesma técnica com BitBlt mas não funcionou.

Existe alguma maneira para espelhar uma imagem com algo tão simples como BitBlt, sem o exagero de um StretchBlt? Ou será que StretchBlt não afetar o desempenho se os tamanhos de origem e de destino são os mesmos?

Foi útil?

Solução

BitBlt só irá executar operações mathmatic (OR, XOR, etc) sobre os pixels individuais em questão, não vai redimensionar a imagem de qualquer forma. Isso é exatamente o que StretchBlt é para, e StretchBlt (em comparação com quaisquer outros gráficos redimensionamento operação) é insanamente rápido que na maioria dos casos ele pode usar a placa de vídeo para acelerar o seu desempenho.

Outras dicas

Todas as funções Win32 são, provavelmente, vai ser extremamente otimizado.

O que faz você pensar que StretchBlt será um grande impacto na performance?

Você perfilado seu aplicativo usando StretchBlt?

Você pode reverter todos os dados de bitmap si mesmo e veja se você pode fazer melhor que StretchBlt.

Aqui está um link que pode ajudá-lo:

http://www.codeguru.com/cpp /gm/bitmap/specialeffects/article.php/c1739

Para espelhar uma imagem você só precisa percorrer os pixels na ordem inversa. Tal como se você deseja espelhar horizontalmente você só precisa fazer o seguinte:

  1. expandir tela de imagem para dobrar o tamanho
  2. começar na parte inferior da imagem e trabalhar seu caminho até escrever os pixels para a área espelhada de cima para baixo.
  3. não etapa 3 da esquerda para a direita.

Eu não sei o idioma que você está usando, mas a maioria deles permitem que você manipula os pixels ou bits numa base individual usando GDI.

De jeito nenhum você vai ser mais eficiente que StretchBlt, a menos que você sabe algumas informações adicionais sobre a imagem (por exemplo, há uma fronteira para que você não tem que virar certas pixels.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top