mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-22 14:59:17 +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;
|
function TQtWidgetSet.LineTo(DC: HDC; X, Y: Integer): Boolean;
|
||||||
var
|
var
|
||||||
PenPos, LastPos: TPoint;
|
PenPos, LastPos: TPoint;
|
||||||
|
OldBkMode: Integer;
|
||||||
begin
|
begin
|
||||||
{$ifdef VerboseQtWinAPI}
|
{$ifdef VerboseQtWinAPI}
|
||||||
WriteLn('[WinAPI LineTo]');
|
WriteLn('[WinAPI LineTo]');
|
||||||
@ -5111,12 +5112,16 @@ begin
|
|||||||
|
|
||||||
TQtDeviceContext(DC).getPenPos(@PenPos);
|
TQtDeviceContext(DC).getPenPos(@PenPos);
|
||||||
LastPos := Point(X, Y);
|
LastPos := Point(X, Y);
|
||||||
|
if TQtDeviceContext(DC).pen.getStyle = QtCustomDashLine then
|
||||||
|
OldBkMode := SetBkMode(DC, TRANSPARENT);
|
||||||
if TQtDeviceContext(DC).pen.getCosmetic then
|
if TQtDeviceContext(DC).pen.getCosmetic then
|
||||||
LastPos := TQtDeviceContext(DC).GetLineLastPixelPos(PenPos, LastPos);
|
LastPos := TQtDeviceContext(DC).GetLineLastPixelPos(PenPos, LastPos);
|
||||||
if QPainter_testRenderHint(TQtDeviceContext(DC).Widget, QPainterAntialiasing) then
|
if QPainter_testRenderHint(TQtDeviceContext(DC).Widget, QPainterAntialiasing) then
|
||||||
TQtDeviceContext(DC).drawLineF(PenPos.X, PenPos.Y, LastPos.X, LastPos.Y)
|
TQtDeviceContext(DC).drawLineF(PenPos.X, PenPos.Y, LastPos.X, LastPos.Y)
|
||||||
else
|
else
|
||||||
TQtDeviceContext(DC).drawLine(PenPos.X, PenPos.Y, LastPos.X, LastPos.Y);
|
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);
|
MoveToEx(DC, X, Y, nil);
|
||||||
|
|
||||||
Result := True;
|
Result := True;
|
||||||
|
@ -5034,6 +5034,7 @@ end;
|
|||||||
function TQtWidgetSet.LineTo(DC: HDC; X, Y: Integer): Boolean;
|
function TQtWidgetSet.LineTo(DC: HDC; X, Y: Integer): Boolean;
|
||||||
var
|
var
|
||||||
PenPos, LastPos: TPoint;
|
PenPos, LastPos: TPoint;
|
||||||
|
OldBkMode: Integer;
|
||||||
begin
|
begin
|
||||||
{$ifdef VerboseQtWinAPI}
|
{$ifdef VerboseQtWinAPI}
|
||||||
WriteLn('[WinAPI LineTo]');
|
WriteLn('[WinAPI LineTo]');
|
||||||
@ -5045,12 +5046,17 @@ begin
|
|||||||
|
|
||||||
TQtDeviceContext(DC).getPenPos(@PenPos);
|
TQtDeviceContext(DC).getPenPos(@PenPos);
|
||||||
LastPos := Point(X, Y);
|
LastPos := Point(X, Y);
|
||||||
|
if TQtDeviceContext(DC).pen.getStyle = QtCustomDashLine then
|
||||||
|
OldBkMode := SetBkMode(DC, TRANSPARENT);
|
||||||
if TQtDeviceContext(DC).pen.getCosmetic then
|
if TQtDeviceContext(DC).pen.getCosmetic then
|
||||||
LastPos := TQtDeviceContext(DC).GetLineLastPixelPos(PenPos, LastPos);
|
LastPos := TQtDeviceContext(DC).GetLineLastPixelPos(PenPos, LastPos);
|
||||||
if QPainter_testRenderHint(TQtDeviceContext(DC).Widget, QPainterAntialiasing) then
|
if QPainter_testRenderHint(TQtDeviceContext(DC).Widget, QPainterAntialiasing) then
|
||||||
TQtDeviceContext(DC).drawLineF(PenPos.X, PenPos.Y, LastPos.X, LastPos.Y)
|
TQtDeviceContext(DC).drawLineF(PenPos.X, PenPos.Y, LastPos.X, LastPos.Y)
|
||||||
else
|
else
|
||||||
TQtDeviceContext(DC).drawLine(PenPos.X, PenPos.Y, LastPos.X, LastPos.Y);
|
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);
|
MoveToEx(DC, X, Y, nil);
|
||||||
|
|
||||||
Result := True;
|
Result := True;
|
||||||
|
@ -5036,6 +5036,7 @@ end;
|
|||||||
function TQtWidgetSet.LineTo(DC: HDC; X, Y: Integer): Boolean;
|
function TQtWidgetSet.LineTo(DC: HDC; X, Y: Integer): Boolean;
|
||||||
var
|
var
|
||||||
PenPos, LastPos: TPoint;
|
PenPos, LastPos: TPoint;
|
||||||
|
OldBkMode: Integer;
|
||||||
begin
|
begin
|
||||||
{$ifdef VerboseQtWinAPI}
|
{$ifdef VerboseQtWinAPI}
|
||||||
WriteLn('[WinAPI LineTo]');
|
WriteLn('[WinAPI LineTo]');
|
||||||
@ -5047,12 +5048,16 @@ begin
|
|||||||
|
|
||||||
TQtDeviceContext(DC).getPenPos(@PenPos);
|
TQtDeviceContext(DC).getPenPos(@PenPos);
|
||||||
LastPos := Point(X, Y);
|
LastPos := Point(X, Y);
|
||||||
|
if TQtDeviceContext(DC).pen.getStyle = QtCustomDashLine then
|
||||||
|
OldBkMode := SetBkMode(DC, TRANSPARENT);
|
||||||
if TQtDeviceContext(DC).pen.getCosmetic then
|
if TQtDeviceContext(DC).pen.getCosmetic then
|
||||||
LastPos := TQtDeviceContext(DC).GetLineLastPixelPos(PenPos, LastPos);
|
LastPos := TQtDeviceContext(DC).GetLineLastPixelPos(PenPos, LastPos);
|
||||||
if QPainter_testRenderHint(TQtDeviceContext(DC).Widget, QPainterAntialiasing) then
|
if QPainter_testRenderHint(TQtDeviceContext(DC).Widget, QPainterAntialiasing) then
|
||||||
TQtDeviceContext(DC).drawLineF(PenPos.X, PenPos.Y, LastPos.X, LastPos.Y)
|
TQtDeviceContext(DC).drawLineF(PenPos.X, PenPos.Y, LastPos.X, LastPos.Y)
|
||||||
else
|
else
|
||||||
TQtDeviceContext(DC).drawLine(PenPos.X, PenPos.Y, LastPos.X, LastPos.Y);
|
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);
|
MoveToEx(DC, X, Y, nil);
|
||||||
|
|
||||||
Result := True;
|
Result := True;
|
||||||
|
Loading…
Reference in New Issue
Block a user