|
From: Emilien K. <cur...@us...> - 2005-02-24 17:27:15
|
Update of /cvsroot/wxdevcenter/StdPlugin/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23362/src Modified Files: BitmapCtrl.cpp Log Message: Dessine un cadre autour de la bitmap dans le BitmapCtrl si la zone cliente est plus grande que la bitmap. Index: BitmapCtrl.cpp =================================================================== RCS file: /cvsroot/wxdevcenter/StdPlugin/src/BitmapCtrl.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** BitmapCtrl.cpp 23 Feb 2005 09:16:46 -0000 1.11 --- BitmapCtrl.cpp 24 Feb 2005 17:26:48 -0000 1.12 *************** *** 47,52 **** m_iZoom(0), m_bExtraScroll(false), ! m_ptOrigin(0,0), ! m_ptMouse(-1, -1) { SetScrollPos(wxHORIZONTAL, 0); --- 47,51 ---- m_iZoom(0), m_bExtraScroll(false), ! m_ptOrigin(0,0) { SetScrollPos(wxHORIZONTAL, 0); *************** *** 67,99 **** } - // Interception de l'évènement peinture de la zone cliente. void BitmapCtrl::OnPaint(wxPaintEvent& WXUNUSED(event)) { - wxPaintDC dc(this); - double dScale = ZoomToScale(); - wxBrush br(GetBackgroundColour()); - dc.SetBackground(br); - dc.BeginDrawing(); ! dc.SetUserScale(dScale, dScale); ! dc.SetDeviceOrigin(-GetScrollPos(wxHORIZONTAL)*dScale, -GetScrollPos(wxVERTICAL)*dScale); ! OnDraw(&dc); dc.EndDrawing(); } - // Dessine l'image dans le contexte de périphérique spécifié. - void BitmapCtrl::OnDraw(wxDC* pDC) - { - - pDC->DrawBitmap(m_Bmp, 0, 0); - - } - - // Interception de l'évènement d'effacement du fond de la zone cliente. void BitmapCtrl::OnEraseBackground(wxEraseEvent& WXUNUSED(event)) --- 66,97 ---- } // Interception de l'évènement peinture de la zone cliente. void BitmapCtrl::OnPaint(wxPaintEvent& WXUNUSED(event)) { double dScale = ZoomToScale(); wxBrush br(GetBackgroundColour()); ! wxPaintDC dc(this); ! dc.SetBrush(br); ! dc.SetPen(*wxTRANSPARENT_PEN); ! dc.BeginDrawing(); ! dc.SetUserScale(dScale, dScale); ! dc.SetDeviceOrigin((m_ptOrigin.x-GetScrollPos(wxHORIZONTAL))*dScale, (m_ptOrigin.y-GetScrollPos(wxVERTICAL))*dScale); ! dc.DrawBitmap(m_Bmp, 0, 0); + wxRect rb(0, 0, m_Bmp.GetWidth(), m_Bmp.GetHeight()); + wxRegion region(ClientToBitmap(wxRect(0, 0, GetClientSize().x, GetClientSize().y))); + region.Subtract(rb); + wxRegionIterator RegIter(region); + while(RegIter) + { + wxRect r = RegIter.GetRect(); + dc.DrawRectangle(r); + RegIter++; + } dc.EndDrawing(); } // Interception de l'évènement d'effacement du fond de la zone cliente. void BitmapCtrl::OnEraseBackground(wxEraseEvent& WXUNUSED(event)) |