Histoire de zoom

Histoire de zoom - C++ - Programmation

Marsh Posté le 17-09-2002 à 17:03:36    

Voila, je veux toujours afficher mon image .tga à l'écran, mais en plus je veux faire un zoom.
Je fais :

Code :
  1. hMemDC=CreateCompatibleDC(pDC->m_hDC);
  2. SetDIBits(hMemDC, hBitmap,0,ImageY,pDoc->GetImagePointer2(),pDoc->GetBmpInfo2(),DIB_RGB_COLORS);
  3. SelectObject(hMemDC, hBitmap);


puis dans la fonction OnDraw:

Code :
  1. StretchBlt(*pDC,0, 0, (ImageX*Zoom)/100,(ImageY*Zoom)/100,hMemDC,0,0,ImageX,ImageY, SRCCOPY);


Ca marche, mais le seul problème c'est qu'il refait à chaque fois le calcul pour zoomer dans la fonction OnDraw. Comme c'est une image assez lourde, ça rame beaucoup plus qu'un simple BitBlt.
Y a t'il un moyen pour qu'il fasse le calcul du zoom, qu'il mette le résultat dans le hMemDC, et qu'il ne reste à faire qu'un BitBlt dans OnDraw ?
 
Merci.

Reply

Marsh Posté le 17-09-2002 à 17:03:36   

Reply

Marsh Posté le 17-09-2002 à 17:32:09    

:??: tu fais ton stretchblt() dans un memdc, tu blittes celui-ci lors du ondraw ...

Reply

Marsh Posté le 18-09-2002 à 20:50:21    

Mouaih, c'est le cerveau qui gèle :D (le pire c'est que ça m'arrive souvent)
Y me reste juste un petit prob : ça marche avec les fichiers de taille normale mais pas avec les gros fichiers (un pcx de 12Mo...)
Enfin, c'est pas trop grave.
Merci encore youdontcare :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed