我正在使用此代码根据我的鼠标位置在我的图表上绘制一个十字架
//Setup color
Canvas.Pen.Style := psSolid;
Canvas.Pen.Width := 1;
CrossSize := 30;
Canvas.Pen.Mode := pmNotXor;
Canvas.Pen.Color := clGray;
//Draw the cross
Canvas.MoveTo(X - CrossSize, Y);
Canvas.LineTo(X + CrossSize, Y);
Canvas.MoveTo(X, Y - CrossSize);
Canvas.LineTo(X, Y + CrossSize);
如果Pen.Mode是pmNotXor,当我的鼠标移出图表时,我的图表背景颜色会变为浅灰色。 如果Pen.Mode是pmXor,则背景颜色变为黑色。
此代码与旧版本的TChart和Delphi XE4完美配合。将软件升级到Delphi10和TeeChart Pro 2017时,我才遇到这个问题。
以下是此问题的屏幕截图。 White background vs移动光标后(触发绘制十字功能)Gray background。
有没有人知道我在这里使用了什么错误,还是与Delphi 10相关的错误?
此致 VU
答案 0 :(得分:1)
这与维多利亚的答案类似,但我就是这样做的。
var
SavePen: TPen;
begin
SavePen := TPen.Create;
try
SavePen.Assign( Canvas.Pen );
// modify the pen
Canvas.Pen.Assign( SavePen );
finally
SavePen.Free;
end;
end;
回到画布Pen的赋值是否应该在finally子句中是有争议的。你的选择,真的。