diff --git a/dlls/gdiplus/gdiplus_private.h b/dlls/gdiplus/gdiplus_private.h index 7c5195a7d7c..d0360570d71 100644 --- a/dlls/gdiplus/gdiplus_private.h +++ b/dlls/gdiplus/gdiplus_private.h @@ -22,7 +22,7 @@ #include "windef.h" #include "gdiplus.h" -#define GP_DEFAULT_PENSTYLE (PS_GEOMETRIC | PS_ENDCAP_FLAT) +#define GP_DEFAULT_PENSTYLE (PS_GEOMETRIC | PS_ENDCAP_FLAT | PS_JOIN_MITER) COLORREF ARGB2COLORREF(ARGB color); diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index 10400095573..06a5dad2547 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -590,31 +590,19 @@ GpStatus WINGDIPAPI GdipDrawPie(GpGraphics *graphics, GpPen *pen, REAL x, GpStatus WINGDIPAPI GdipDrawRectangleI(GpGraphics *graphics, GpPen *pen, INT x, INT y, INT width, INT height) { - LOGBRUSH lb; - HPEN hpen; - HGDIOBJ old_obj; + INT save_state; if(!pen || !graphics) return InvalidParameter; - lb.lbStyle = BS_SOLID; - lb.lbColor = pen->color; - lb.lbHatch = 0; + save_state = SaveDC(graphics->hdc); + EndPath(graphics->hdc); + SelectObject(graphics->hdc, pen->gdipen); + SelectObject(graphics->hdc, GetStockObject(NULL_BRUSH)); - hpen = ExtCreatePen(PS_GEOMETRIC | PS_ENDCAP_SQUARE, (INT) pen->width, - &lb, 0, NULL); + Rectangle(graphics->hdc, x, y, x + width, y + height); - old_obj = SelectObject(graphics->hdc, hpen); - - /* assume pen aligment centered */ - MoveToEx(graphics->hdc, x, y, NULL); - LineTo(graphics->hdc, x+width, y); - LineTo(graphics->hdc, x+width, y+height); - LineTo(graphics->hdc, x, y+height); - LineTo(graphics->hdc, x, y); - - SelectObject(graphics->hdc, old_obj); - DeleteObject(hpen); + RestoreDC(graphics->hdc, save_state); return Ok; }