Qt: keep QPen in sync when setting it out of device context. Issue #0027620

git-svn-id: branches/fixes_1_4@48363 -
This commit is contained in:
mattias 2015-03-15 11:13:51 +00:00
parent 22c85e3f3f
commit d6b635037f

View File

@ -1225,7 +1225,6 @@ end;
procedure TQtWidgetSet.DCSetPixel(CanvasHandle: HDC; X, Y: integer; AColor: TGraphicsColor); procedure TQtWidgetSet.DCSetPixel(CanvasHandle: HDC; X, Y: integer; AColor: TGraphicsColor);
var var
ASavedColor: TQColor;
Color: TQColor; Color: TQColor;
ColorRef: TColorRef; ColorRef: TColorRef;
Pen: QPenH; Pen: QPenH;
@ -1235,13 +1234,18 @@ begin
begin begin
// WriteLn('TQtWidgetSet.DCSetPixel X=',X,' Y=',Y, ' AColor=',dbghex(AColor),' rgb ? ',dbgHex(ColorToRGB(AColor))); // WriteLn('TQtWidgetSet.DCSetPixel X=',X,' Y=',Y, ' AColor=',dbghex(AColor),' rgb ? ',dbgHex(ColorToRGB(AColor)));
Painter := TQtDeviceContext(CanvasHandle).Widget; Painter := TQtDeviceContext(CanvasHandle).Widget;
Pen := QPainter_pen(Painter); {Save current pen.Better save copy of pen instead of
QPen_color(Pen, @ASavedColor); using painter save/restore, or saved Pen in devicecontext which
ColorRef := TColorRef(ColorToRGB(AColor)); may be null. Issue #27620}
QColor_fromRgb(@Color, Red(ColorRef), Green(ColorRef), Blue(ColorRef)); Pen := QPen_create(QPainter_pen(Painter));
QPainter_setPen(Painter, @Color); try
QPainter_drawPoint(Painter, X,Y); ColorRef := TColorRef(ColorToRGB(AColor));
QPainter_setPen(Painter, @ASavedColor); QColor_fromRgb(@Color, Red(ColorRef), Green(ColorRef), Blue(ColorRef));
QPainter_setPen(Painter, @Color);
QPainter_drawPoint(Painter, X,Y);
finally
QPainter_setPen(Painter, Pen);
end;
end; end;
end; end;