avoid using wxDC::Blit() and wxDC::GetPixel() on window that is being painted, results are unpredictable on wxGTK
see #14067 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70823 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
944a0ae011
commit
d9a1b21859
@ -554,19 +554,29 @@ void MyCanvas::DrawTestLines( int x, int y, int width, wxDC &dc )
|
||||
|
||||
void MyCanvas::DrawDefault(wxDC& dc)
|
||||
{
|
||||
// mark the origin
|
||||
dc.DrawCircle(0, 0, 10);
|
||||
|
||||
#if !defined(wxMAC_USE_CORE_GRAPHICS) || !wxMAC_USE_CORE_GRAPHICS
|
||||
// GetPixel and FloodFill not supported by Mac OS X CoreGraphics
|
||||
// (FloodFill uses Blit from a non-wxMemoryDC)
|
||||
//flood fill using brush, starting at 1,1 and replacing whatever colour we find there
|
||||
dc.SetBrush(wxBrush(wxColour(128,128,0), wxSOLID));
|
||||
|
||||
wxColour tmpColour ;
|
||||
dc.GetPixel(1,1, &tmpColour);
|
||||
dc.FloodFill(1,1, tmpColour, wxFLOOD_SURFACE);
|
||||
#endif
|
||||
// Draw circle centered at the origin, then flood fill it with a different
|
||||
// color. Done with a wxMemoryDC because Blit (used by generic
|
||||
// wxDoFloodFill) from a window that is being painted gives unpredictable
|
||||
// results on wxGTK
|
||||
{
|
||||
wxImage img(21, 21, false);
|
||||
img.Clear(1);
|
||||
wxBitmap bmp(img);
|
||||
{
|
||||
wxMemoryDC mdc(bmp);
|
||||
mdc.SetBrush(dc.GetBrush());
|
||||
mdc.SetPen(dc.GetPen());
|
||||
mdc.DrawCircle(10, 10, 10);
|
||||
wxColour c;
|
||||
if (mdc.GetPixel(11, 11, &c))
|
||||
{
|
||||
mdc.SetBrush(wxColour(128, 128, 0));
|
||||
mdc.FloodFill(11, 11, c, wxFLOOD_SURFACE);
|
||||
}
|
||||
}
|
||||
bmp.SetMask(new wxMask(bmp, wxColour(1, 1, 1)));
|
||||
dc.DrawBitmap(bmp, -10, -10, true);
|
||||
}
|
||||
|
||||
dc.DrawCheckMark(5, 80, 15, 15);
|
||||
dc.DrawCheckMark(25, 80, 30, 30);
|
||||
|
Loading…
Reference in New Issue
Block a user