@@ -25,6 +25,26 @@ static Gdiplus::RectF CreateRectF (const NUIE::Rect& rect)
2525 return gdiRect;
2626}
2727
28+ class DisableAntialiasGuard
29+ {
30+ public:
31+ DisableAntialiasGuard (Gdiplus::Graphics* graphics) :
32+ graphics (graphics),
33+ oldMode (graphics->GetSmoothingMode ())
34+ {
35+ graphics->SetSmoothingMode (Gdiplus::SmoothingMode::SmoothingModeNone);
36+ }
37+
38+ ~DisableAntialiasGuard ()
39+ {
40+ graphics->SetSmoothingMode (oldMode);
41+ }
42+
43+ private:
44+ Gdiplus::Graphics* graphics;
45+ Gdiplus::SmoothingMode oldMode;
46+ };
47+
2848GdiplusOffscreenContext::GdiplusOffscreenContext () :
2949 NUIE::NativeDrawingContext (),
3050 gdiplusInitializer (),
@@ -96,7 +116,7 @@ int GdiplusOffscreenContext::GetHeight () const
96116
97117void GdiplusOffscreenContext::BeginDraw ()
98118{
99-
119+ graphics-> SetSmoothingMode (Gdiplus::SmoothingMode::SmoothingModeAntiAlias);
100120}
101121
102122void GdiplusOffscreenContext::EndDraw ()
@@ -125,6 +145,7 @@ void GdiplusOffscreenContext::DrawBezier (const NUIE::Point& p1, const NUIE::Poi
125145
126146void GdiplusOffscreenContext::DrawRect (const NUIE::Rect& rect, const NUIE::Pen& pen)
127147{
148+ DisableAntialiasGuard antialiasGuard (graphics.get ());
128149 const NUIE::Color& color = pen.GetColor ();
129150 Gdiplus::Pen gdiPen (Gdiplus::Color (color.GetR (), color.GetG (), color.GetB ()), (Gdiplus::REAL) pen.GetThickness ());
130151 Gdiplus::Rect gdiRect = CreateRect (rect);
@@ -133,6 +154,7 @@ void GdiplusOffscreenContext::DrawRect (const NUIE::Rect& rect, const NUIE::Pen&
133154
134155void GdiplusOffscreenContext::FillRect (const NUIE::Rect& rect, const NUIE::Color& color)
135156{
157+ DisableAntialiasGuard antialiasGuard (graphics.get ());
136158 Gdiplus::SolidBrush brush (Gdiplus::Color (color.GetR (), color.GetG (), color.GetB ()));
137159 Gdiplus::Rect gdiRect = CreateRect (rect);
138160 graphics->FillRectangle (&brush, gdiRect);
@@ -215,7 +237,6 @@ void GdiplusOffscreenContext::InitGraphics ()
215237{
216238 bitmap.reset (new Gdiplus::Bitmap (width, height));
217239 graphics.reset (new Gdiplus::Graphics (bitmap.get ()));
218- graphics->SetSmoothingMode (Gdiplus::SmoothingMode::SmoothingModeAntiAlias);
219240}
220241
221242}
0 commit comments