Bonjour,
Bon, j'en peux plus, j'y arrive pas!
J'ai une image affich�e par OnDraw dans la vue et je veux dessiner par dessus un rectangle de s�lection (il se cr�e en pointill�s et au relachement de la souris passe en trais pleins).
1�/ Je cherche dans la doc depuis un bon moment mais je ne trouve pas de moyen de cr��r un pinceau transparent pour le fond.
2�/ Si je dessine le rectangle dans OnDraw, je ne vois pas le style de crayon que j'ai demand� (j'avais avant dessin� le rectangle dans OnMouseMove en cr�ant/s�lectionnant le crayon , dessinant le rectangle, et d�selectionnat/d�truisant le crayon, ce qui a mon avis �tait pas g�nial).
Et voil� le code :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 void CMyProjectView::OnLButtonDown(UINT nFlags, CPoint point) { if(!m_ImgView) return; m_StartPoint = point; m_hpNew = CreatePen(PS_DOT, 1, RGB(0,255,0)); m_hpOld = (HPEN)SelectObject(GetDC()->m_hDC,m_hpNew); //m_hbrNew = CreateSolidBrush(!!!!!!!!Transparent!!!!!!!!); //pour l'instant il est blanc, ça me va pas //m_hbrOld =(HBRUSH)SelectObject(hDC,m_hbrNew); m_bDrawRect = true; CView::OnLButtonDown(nFlags, point); }
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 void CMyProjectView::OnMouseMove(UINT nFlags, CPoint point) { if(!m_ImgView) return; //** Position de la souris int xCursor = point.x; int yCursor = point.y; //** Si le bouton est enfoncé, on change le point final du rectangle. if((GetAsyncKeyState(VK_LBUTTON) & 0x8000) != 0) { m_EndPoint.x = xCursor; m_EndPoint.y = yCursor; //** Redessine l'image avec le nouveau rectangle OnDraw(GetDC()); } CView::OnMouseMove(nFlags, point); }
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7 void CMyProjectView::OnDraw(CDC* pDC) { //... if(m_bDrawRect) Rectangle(pDC->m_hDC, m_StartPoint.x, m_StartPoint.y, m_EndPoint.x, m_EndPoint.y); }
Code : S�lectionner tout - Visualiser dans une fen�tre � part
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 void CMyProjectView::OnLButtonUp(UINT nFlags, CPoint point) { m_EndPoint = point; CDC* pDC = GetDC(); HDC hDC = GetDC()->m_hDC; //** Changement de style de crayon (plein et épais) SelectObject(hDC,m_hpOld); DeleteObject(m_hpNew); m_hpNew = CreatePen(PS_SOLID, 2, RGB(0,255,0)); m_hpOld = (HPEN)SelectObject(hDC,m_hpNew); OnDraw(pDC); //** On se débarasse visuellement du rectangle en cliquant sans déplacer if(m_EndPoint==m_StartPoint) { //SelectObject(hDC,m_m_hbrOld); //DeleteObject(m_hbrNew); SelectObject(hDC,m_hpOld); DeleteObject(m_hpNew); m_bDrawRect = false; } CView::OnLButtonUp(nFlags, point); }
Partager