mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-14 12:59:37 +02:00
Qt,Qt5,Qt6: Fixed drawing line with pattern pen. issue #40165
This commit is contained in:
parent
8ea105ce5d
commit
77f502b2c3
@ -5100,6 +5100,7 @@ end;
|
||||
function TQtWidgetSet.LineTo(DC: HDC; X, Y: Integer): Boolean;
|
||||
var
|
||||
PenPos, LastPos: TPoint;
|
||||
OldBkMode: Integer;
|
||||
begin
|
||||
{$ifdef VerboseQtWinAPI}
|
||||
WriteLn('[WinAPI LineTo]');
|
||||
@ -5111,12 +5112,16 @@ begin
|
||||
|
||||
TQtDeviceContext(DC).getPenPos(@PenPos);
|
||||
LastPos := Point(X, Y);
|
||||
if TQtDeviceContext(DC).pen.getStyle = QtCustomDashLine then
|
||||
OldBkMode := SetBkMode(DC, TRANSPARENT);
|
||||
if TQtDeviceContext(DC).pen.getCosmetic then
|
||||
LastPos := TQtDeviceContext(DC).GetLineLastPixelPos(PenPos, LastPos);
|
||||
if QPainter_testRenderHint(TQtDeviceContext(DC).Widget, QPainterAntialiasing) then
|
||||
TQtDeviceContext(DC).drawLineF(PenPos.X, PenPos.Y, LastPos.X, LastPos.Y)
|
||||
else
|
||||
TQtDeviceContext(DC).drawLine(PenPos.X, PenPos.Y, LastPos.X, LastPos.Y);
|
||||
if TQtDeviceContext(DC).pen.getStyle = QtCustomDashLine then
|
||||
SetBkMode(DC, OldBkMode);
|
||||
MoveToEx(DC, X, Y, nil);
|
||||
|
||||
Result := True;
|
||||
|
@ -5034,6 +5034,7 @@ end;
|
||||
function TQtWidgetSet.LineTo(DC: HDC; X, Y: Integer): Boolean;
|
||||
var
|
||||
PenPos, LastPos: TPoint;
|
||||
OldBkMode: Integer;
|
||||
begin
|
||||
{$ifdef VerboseQtWinAPI}
|
||||
WriteLn('[WinAPI LineTo]');
|
||||
@ -5045,12 +5046,17 @@ begin
|
||||
|
||||
TQtDeviceContext(DC).getPenPos(@PenPos);
|
||||
LastPos := Point(X, Y);
|
||||
if TQtDeviceContext(DC).pen.getStyle = QtCustomDashLine then
|
||||
OldBkMode := SetBkMode(DC, TRANSPARENT);
|
||||
if TQtDeviceContext(DC).pen.getCosmetic then
|
||||
LastPos := TQtDeviceContext(DC).GetLineLastPixelPos(PenPos, LastPos);
|
||||
if QPainter_testRenderHint(TQtDeviceContext(DC).Widget, QPainterAntialiasing) then
|
||||
TQtDeviceContext(DC).drawLineF(PenPos.X, PenPos.Y, LastPos.X, LastPos.Y)
|
||||
else
|
||||
TQtDeviceContext(DC).drawLine(PenPos.X, PenPos.Y, LastPos.X, LastPos.Y);
|
||||
|
||||
if TQtDeviceContext(DC).pen.getStyle = QtCustomDashLine then
|
||||
SetBkMode(DC, OldBkMode);
|
||||
MoveToEx(DC, X, Y, nil);
|
||||
|
||||
Result := True;
|
||||
|
@ -5036,6 +5036,7 @@ end;
|
||||
function TQtWidgetSet.LineTo(DC: HDC; X, Y: Integer): Boolean;
|
||||
var
|
||||
PenPos, LastPos: TPoint;
|
||||
OldBkMode: Integer;
|
||||
begin
|
||||
{$ifdef VerboseQtWinAPI}
|
||||
WriteLn('[WinAPI LineTo]');
|
||||
@ -5047,12 +5048,16 @@ begin
|
||||
|
||||
TQtDeviceContext(DC).getPenPos(@PenPos);
|
||||
LastPos := Point(X, Y);
|
||||
if TQtDeviceContext(DC).pen.getStyle = QtCustomDashLine then
|
||||
OldBkMode := SetBkMode(DC, TRANSPARENT);
|
||||
if TQtDeviceContext(DC).pen.getCosmetic then
|
||||
LastPos := TQtDeviceContext(DC).GetLineLastPixelPos(PenPos, LastPos);
|
||||
if QPainter_testRenderHint(TQtDeviceContext(DC).Widget, QPainterAntialiasing) then
|
||||
TQtDeviceContext(DC).drawLineF(PenPos.X, PenPos.Y, LastPos.X, LastPos.Y)
|
||||
else
|
||||
TQtDeviceContext(DC).drawLine(PenPos.X, PenPos.Y, LastPos.X, LastPos.Y);
|
||||
if TQtDeviceContext(DC).pen.getStyle = QtCustomDashLine then
|
||||
SetBkMode(DC, OldBkMode);
|
||||
MoveToEx(DC, X, Y, nil);
|
||||
|
||||
Result := True;
|
||||
|
Loading…
Reference in New Issue
Block a user