diff --git a/docs/changes.txt b/docs/changes.txt index 640114f82a..6e6100b7d5 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -655,6 +655,7 @@ wxMSW: - Fix expander in non left-most position in wxDataViewCtrl (Laurent Poujoulat). - Don't fail when using large paper sizes in print preview. - Fix wxRichMessageDialog return value for dialog with only "OK" button. +- Fix precision loss in wxGraphicsContext::{Draw,Stroke}Lines() (tibo_). wxOSX: diff --git a/src/msw/graphics.cpp b/src/msw/graphics.cpp index e0af6a5d10..e46c3709c3 100644 --- a/src/msw/graphics.cpp +++ b/src/msw/graphics.cpp @@ -1488,11 +1488,11 @@ void wxGDIPlusContext::StrokeLines( size_t n, const wxPoint2DDouble *points) if ( !m_pen.IsNull() ) { wxGDIPlusOffsetHelper helper( m_context , ShouldOffset() ); - Point *cpoints = new Point[n]; + PointF *cpoints = new PointF[n]; for (size_t i = 0; i < n; i++) { - cpoints[i].X = (int)(points[i].m_x ); - cpoints[i].Y = (int)(points[i].m_y ); + cpoints[i].X = static_cast(points[i].m_x); + cpoints[i].Y = static_cast(points[i].m_y); } // for (size_t i = 0; i < n; i++) m_context->DrawLines( ((wxGDIPlusPenData*)m_pen.GetGraphicsData())->GetGDIPlusPen() , cpoints , n ) ; @@ -1506,11 +1506,11 @@ void wxGDIPlusContext::DrawLines( size_t n, const wxPoint2DDouble *points, wxPol return; wxGDIPlusOffsetHelper helper( m_context , ShouldOffset() ); - Point *cpoints = new Point[n]; + PointF *cpoints = new PointF[n]; for (size_t i = 0; i < n; i++) { - cpoints[i].X = (int)(points[i].m_x ); - cpoints[i].Y = (int)(points[i].m_y ); + cpoints[i].X = static_cast(points[i].m_x); + cpoints[i].Y = static_cast(points[i].m_y); } // for (int i = 0; i < n; i++) if ( !m_brush.IsNull() )