Merge branch 'drawing-lines'
Fix drawing of dotted/hatched lines in wxMSW and some drawing sample improvements. Closes #7097. See https://github.com/wxWidgets/wxWidgets/pull/1771
This commit is contained in:
@@ -203,31 +203,16 @@ public:
|
||||
m_canvas->UseGraphicRenderer(NULL);
|
||||
}
|
||||
|
||||
void OnGraphicContextNoneUpdateUI(wxUpdateUIEvent& event)
|
||||
{
|
||||
event.Check(m_canvas->GetRenderer() == NULL);
|
||||
}
|
||||
|
||||
void OnGraphicContextDefault(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
m_canvas->UseGraphicRenderer(wxGraphicsRenderer::GetDefaultRenderer());
|
||||
}
|
||||
|
||||
void OnGraphicContextDefaultUpdateUI(wxUpdateUIEvent& event)
|
||||
{
|
||||
event.Check(m_canvas->IsDefaultRenderer());
|
||||
}
|
||||
|
||||
#if wxUSE_CAIRO
|
||||
void OnGraphicContextCairo(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
m_canvas->UseGraphicRenderer(wxGraphicsRenderer::GetCairoRenderer());
|
||||
}
|
||||
|
||||
void OnGraphicContextCairoUpdateUI(wxUpdateUIEvent& event)
|
||||
{
|
||||
event.Check(m_canvas->GetRenderer() == wxGraphicsRenderer::GetCairoRenderer());
|
||||
}
|
||||
#endif // wxUSE_CAIRO
|
||||
#ifdef __WXMSW__
|
||||
#if wxUSE_GRAPHICS_GDIPLUS
|
||||
@@ -235,22 +220,12 @@ public:
|
||||
{
|
||||
m_canvas->UseGraphicRenderer(wxGraphicsRenderer::GetGDIPlusRenderer());
|
||||
}
|
||||
|
||||
void OnGraphicContextGDIPlusUpdateUI(wxUpdateUIEvent& event)
|
||||
{
|
||||
event.Check(m_canvas->GetRenderer() == wxGraphicsRenderer::GetGDIPlusRenderer());
|
||||
}
|
||||
#endif
|
||||
#if wxUSE_GRAPHICS_DIRECT2D
|
||||
void OnGraphicContextDirect2D(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
m_canvas->UseGraphicRenderer(wxGraphicsRenderer::GetDirect2DRenderer());
|
||||
}
|
||||
|
||||
void OnGraphicContextDirect2DUpdateUI(wxUpdateUIEvent& event)
|
||||
{
|
||||
event.Check(m_canvas->GetRenderer() == wxGraphicsRenderer::GetDirect2DRenderer());
|
||||
}
|
||||
#endif
|
||||
#endif // __WXMSW__
|
||||
void OnAntiAliasing(wxCommandEvent& event)
|
||||
@@ -639,7 +614,7 @@ void MyCanvas::DrawTestPoly(wxDC& dc)
|
||||
void MyCanvas::DrawTestLines( int x, int y, int width, wxDC &dc )
|
||||
{
|
||||
dc.SetPen( wxPen( *wxBLACK, width ) );
|
||||
dc.SetBrush( *wxRED_BRUSH );
|
||||
dc.SetBrush( *wxWHITE_BRUSH );
|
||||
dc.DrawText(wxString::Format("Testing lines of width %d", width), x + 10, y - 10);
|
||||
dc.DrawRectangle( x+10, y+10, 100, 190 );
|
||||
|
||||
@@ -2230,21 +2205,16 @@ wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
||||
|
||||
#if wxUSE_GRAPHICS_CONTEXT
|
||||
EVT_MENU (File_GC_Default, MyFrame::OnGraphicContextDefault)
|
||||
EVT_UPDATE_UI (File_GC_Default, MyFrame::OnGraphicContextDefaultUpdateUI)
|
||||
EVT_MENU (File_DC, MyFrame::OnGraphicContextNone)
|
||||
EVT_UPDATE_UI (File_DC, MyFrame::OnGraphicContextNoneUpdateUI)
|
||||
#if wxUSE_CAIRO
|
||||
EVT_MENU (File_GC_Cairo, MyFrame::OnGraphicContextCairo)
|
||||
EVT_UPDATE_UI (File_GC_Cairo, MyFrame::OnGraphicContextCairoUpdateUI)
|
||||
#endif // wxUSE_CAIRO
|
||||
#ifdef __WXMSW__
|
||||
#if wxUSE_GRAPHICS_GDIPLUS
|
||||
EVT_MENU (File_GC_GDIPlus, MyFrame::OnGraphicContextGDIPlus)
|
||||
EVT_UPDATE_UI (File_GC_GDIPlus, MyFrame::OnGraphicContextGDIPlusUpdateUI)
|
||||
#endif
|
||||
#if wxUSE_GRAPHICS_DIRECT2D
|
||||
EVT_MENU (File_GC_Direct2D, MyFrame::OnGraphicContextDirect2D)
|
||||
EVT_UPDATE_UI (File_GC_Direct2D, MyFrame::OnGraphicContextDirect2DUpdateUI)
|
||||
#endif
|
||||
#endif // __WXMSW__
|
||||
EVT_MENU (File_AntiAliasing, MyFrame::OnAntiAliasing)
|
||||
@@ -2292,17 +2262,39 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
|
||||
|
||||
wxMenu *menuFile = new wxMenu;
|
||||
#if wxUSE_GRAPHICS_CONTEXT
|
||||
menuFile->AppendCheckItem(File_GC_Default, "Use default wx&GraphicContext\t1");
|
||||
m_menuItemUseDC = menuFile->AppendRadioItem(File_DC, "Use wx&DC\t0");
|
||||
// Number the different renderer choices consecutively, starting from 0.
|
||||
int accel = 0;
|
||||
m_menuItemUseDC = menuFile->AppendRadioItem
|
||||
(
|
||||
File_DC,
|
||||
wxString::Format("Use wx&DC\t%d", accel++)
|
||||
);
|
||||
menuFile->AppendRadioItem
|
||||
(
|
||||
File_GC_Default,
|
||||
wxString::Format("Use default wx&GraphicContext\t%d", accel++)
|
||||
);
|
||||
#if wxUSE_CAIRO
|
||||
menuFile->AppendRadioItem(File_GC_Cairo, "Use &Cairo\t2");
|
||||
menuFile->AppendRadioItem
|
||||
(
|
||||
File_GC_Cairo,
|
||||
wxString::Format("Use &Cairo\t%d", accel++)
|
||||
);
|
||||
#endif // wxUSE_CAIRO
|
||||
#ifdef __WXMSW__
|
||||
#if wxUSE_GRAPHICS_GDIPLUS
|
||||
menuFile->AppendRadioItem(File_GC_GDIPlus, "Use &GDI+\t3");
|
||||
menuFile->AppendRadioItem
|
||||
(
|
||||
File_GC_GDIPlus,
|
||||
wxString::Format("Use &GDI+\t%d", accel++)
|
||||
);
|
||||
#endif
|
||||
#if wxUSE_GRAPHICS_DIRECT2D
|
||||
menuFile->AppendRadioItem(File_GC_Direct2D, "Use &Direct2D\t4");
|
||||
menuFile->AppendRadioItem
|
||||
(
|
||||
File_GC_Direct2D,
|
||||
wxString::Format("Use &Direct2D\t%d", accel++)
|
||||
);
|
||||
#endif
|
||||
#endif // __WXMSW__
|
||||
#endif // wxUSE_GRAPHICS_CONTEXT
|
||||
|
@@ -284,9 +284,7 @@ bool wxPenRefData::Alloc()
|
||||
// CreatePen()
|
||||
if ( m_join == wxJOIN_ROUND &&
|
||||
m_cap == wxCAP_ROUND &&
|
||||
m_style != wxPENSTYLE_USER_DASH &&
|
||||
m_style != wxPENSTYLE_STIPPLE &&
|
||||
(m_width <= 1 || m_style == wxPENSTYLE_SOLID) )
|
||||
m_style == wxPENSTYLE_SOLID )
|
||||
{
|
||||
m_hPen = ::CreatePen(ConvertPenStyle(m_style), m_width, col);
|
||||
}
|
||||
@@ -358,7 +356,10 @@ bool wxPenRefData::Alloc()
|
||||
dash = NULL;
|
||||
}
|
||||
|
||||
m_hPen = ::ExtCreatePen(styleMSW, m_width, &lb, m_nbDash, (LPDWORD)dash);
|
||||
// Note that width can't be 0 for ExtCreatePen(), unlike for CreatePen().
|
||||
int width = m_width == 0 ? 1 : m_width;
|
||||
|
||||
m_hPen = ::ExtCreatePen(styleMSW, width, &lb, m_nbDash, (LPDWORD)dash);
|
||||
|
||||
delete [] dash;
|
||||
}
|
||||
|
Reference in New Issue
Block a user