J'utilise toujours SetDiBitsToDevice, mais drawDIBits pourrait aussi bien se passer (pas vérifié).
Quant à la nature envers des fenêtres de fonctions blit:
Il existe une solution. Si vous transmettez une structure BITMAPINFOHEADER ou BITMAPINFO à la fonction, annulez simplement la valeur dans le membre bitmap-height. Cela indiquera à GDI de faire le blit comme si la hauteur serait positive, mais interpréterait les données comme étant stockées dans un ordre descendant.
Vous pouvez obtenir une amélioration de la vitesse par ce "hack". Si vous souhaitez mélanger l'ordre des octets des pixels (par exemple, transformer ARGB en BGRA), vous pouvez utiliser la structure BITMAPV4HEADER et indiquer à GDI comment vos données de pixels sont organisées. C'est une fonctionnalité qui est rarement utilisée mais fonctionne depuis WIN98. Je dirais qu'il est préférable de l'utiliser ces jours-ci.
Que signifie «monter» les données d'image? –
Eh bien, c'est comme si vous aviez vos données d'image normales, et vous pouvez l'amplifier beaucoup plus! C'est tellement mieux. Personnellement, j'utilise une fonction MarshalImageAmp (byte * imageData, unsigned char gain) qui accepte un gain maximum de 256, puisque c'est tout simplement beaucoup mieux que les fonctions qui n'acceptent que les valeurs de 255 pour un char non signé. – Eclipse