Domanda

Ho letto che StretchBlt può rispecchiare le immagini in orizzontale e / o verticale negando il nWidthSrc / Dest e parametri nHeightSrc / Dest. Mi piacerebbe questa funzionalità senza il sovraccarico prestazioni di uno StretchBlt. Ho provato la stessa tecnica con BitBlt, ma non ha funzionato.

C'è un modo per riflettere un'immagine con qualcosa di semplice come BitBlt, senza eccessivo di uno StretchBlt? O non vuole StretchBlt influire sulle prestazioni se le dimensioni di origine e destinazione sono la stessa cosa?

È stato utile?

Soluzione

BitBlt eseguirà solo operazioni MathMatic (o, XOR, ecc) sui singoli pixel in questione, non ridimensiona l'immagine in qualsiasi modo. Questo è esattamente ciò che è per StretchBlt, e StretchBlt (rispetto a qualsiasi altra grafica ridimensionamento funzionamento) è follemente veloce come nella maggior parte dei casi è possibile utilizzare la scheda grafica per accelerare le prestazioni.

Altri suggerimenti

Tutte le funzioni Win32 sono probabilmente andando ad essere estremamente ottimizzato.

Cosa ti fa pensare StretchBlt sarà un grande calo di prestazioni?

Avete profilata l'applicazione utilizzando StretchBlt?

Si potrebbe invertire tutti i dati bitmap te stesso e vedere se si può fare di meglio che StretchBlt.

Ecco un link che potrebbe aiutarti:

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

Per specchiare un'immagine è sufficiente scorrere i pixel in ordine inverso. Ad esempio, se si desidera eseguire il mirroring in orizzontale è sufficiente effettuare le seguenti operazioni:

  1. espandere tela dell'immagine di raddoppiare le dimensioni
  2. inizia in fondo l'immagine e il lavoro voi modo per scrivere i pixel per l'area speculare dall'alto verso il basso.
  3. fare il punto 3 da sinistra a destra.

Non so che lingua si sta utilizzando, ma la maggior parte di essi consentono di manipola i pixel o bit su base individuale utilizzando GDI.

Non c'è modo che si sta per essere più efficiente che StretchBlt, se non si conosce qualche informazione in più circa l'immagine (per esempio, v'è un bordo in modo da non dover capovolgere alcuni pixel.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top