J'ai un problème de mémoire avec un algorithme que j'utilise pour "Aplatir" une page dans un document PDF.CreateDibSection sur le disque au lieu de la mémoire physique
HBITMAP hbmp = CreateDibSection(...);
ThirdPartyBmpManipulation(hbmp, "C:\\file.pdf", 0); //renders page 0 in file.pdf
void * hdib = ConvertBitmap(hbmp); //copy a Dib Section to a Dib
DeleteObject(hbmp); //frees the HBitmap while the Dib is now in memory
Le problème est que j'ai un bitmap vraiment grand et dans certains cas, je ne peux pas garder le HBitmap en mémoire pendant que je le DIB à allouer être copiés.
Donc, c'est long, mais puis-je en quelque sorte allouer la section Dib sur le disque et avoir encore un HBITMAP pour cela? (utilisez la même poignée pour ma fonction ConvertBitmap)
Cela semble être une bonne question. Je serais intéressé à connaître la réponse. Mais pourquoi utilisez-vous toujours l'ancienne API Windows? C'est vraiment vieux. Pourquoi ne pas utiliser GDI +? – Rafid
@Promather GDI + est juste une enveloppe autour de GDI qui le rend vraiment lent ;-) –
Hmmm .... Je ne suis pas d'accord avec vous David. GDI + est censé être une chose complètement nouvelle qu'avec Windows Vista et 7 a commencé à utiliser l'accélération graphique. Ai-je raison, ou mélange-t-on les choses? Quoi qu'il en soit, même si elle est plus lente, elle peut avoir une meilleure structure qui facilite la lecture/écriture de bitmaps à partir du disque dur. – Rafid