Bonjour Bonjour
J'aimerai savoir comment faire pour enregistrer des dessins, fait dans un CDC, dans un CBitmap, un peu � la mani�re de Paint mais sans la gestion de fichier.
Je suis sous VS2005 et toutes infos me sera utile, Merci ^^
Version imprimable
Bonjour Bonjour
J'aimerai savoir comment faire pour enregistrer des dessins, fait dans un CDC, dans un CBitmap, un peu � la mani�re de Paint mais sans la gestion de fichier.
Je suis sous VS2005 et toutes infos me sera utile, Merci ^^
C'est simple, dans un DC il y a d�j� un Bitmap.
Si tu as plein acc�s au DC (un MemoryDC par exemple), tu peux s�lectionner un autre bitmap � la place de celui qui est dedans, et travailler sur le bitmap ainsi lib�r�.
Si tu n'as pas plein acc�s au DC, tu devras cr�er un MemoryDC avec un bitmap de la bonne taille, faire un BitBlt() d'un DC � l'autre, puis isoler le bitmap de ton MemoryDC.
Je ne sais pas trop comment on fait �a en MFC, j'ai l'habitude d'utiliser l'API Win32. Mais bon, �a ne doit pas �tre trop diff�rent.
Pour Win32:
- CreateCompatibleDC() pour cr�er le memoryDC.
- CreateCompatibleBitmap(DC d'origine, pas le memoryDC) pour cr�er un bitmap du m�me type/m�me r�solution couleur, ou CreateDIBSection() pour cr�er un bitmap avec sa propre palette et r�solution couleur.
- SelectObject() pour s�lectionner ou isoler un bitmap d'un DC.
- BitBlt(..., SRCCOPY) pour la copie.
tu peux regarder dans la faq dans un premier temps http://c.developpez.com/faq/vc/?page...iteWindowToDIB
Merci pour les infos.
La FAQ c'est la 1ere chose que je lis... mais j'avais pas comprit ce passage...
Et d'ailleurs je doit toujours pas avoir comprit car ce que je fais ne marches pas :/
J'obtient une image aux bonnes dimmensions mais noire :/Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 list.Create(40, 10, ILC_COLOR, 3, 3); CBitmap bitmap ; CDC * dc; CDC memDC; CRect rect; dc = GetDC() ; memDC.CreateCompatibleDC(dc); bitmap.CreateCompatibleBitmap(dc, 40,10 ); CBitmap* pOldBitmap = memDC.SelectObject(&bitmap); CBrush br ; br.CreateHatchBrush(2,RGB(255,0,0)) ; memDC.SelectObject(&br) ; memDC.Rectangle(0,0,40,10) ; list.Add(pOldBitmap,RGB(0,0,255)) ; memDC.BitBlt(0, 0, 40,10, dc, 0, 0, SRCCOPY); memDC.SelectObject(pOldBitmap); c_box.SetImageList(&list) ;
Je suis certain que ca vient de l'ordre dans lequel je met les fonctions mais l� je vois pas trop...
�a fait quoi, �a ?Code:list.Add(pOldBitmap,RGB(0,0,255)) ;