在一个朋友用 Pascal 编写的程序(一个基本的保龄球游戏)中,游戏元素(球、背景等)被绘制在 TShape 的画布中(Shape1.Canvas
)
问题是在该 Canvas 上绘制的元素被裁剪为该 TShape 左上角画布上的一个小矩形。看这个截图:
请注意,我已经看到另一个同样使用 Lazarus/LCL(lazarus 的主要图形/ui 库)的 Pascal 程序存在此类问题,并且该保龄球程序在 Windows 中运行时没有任何错误,我猜该错误仅在 Linux 中出现。 .
另请注意,当从计时器以外的过程(例如在 OnFormCreate 或其他程序中)在此画布上绘图时,将绘制整个画布。
以下是执行的绘图操作(在计时器的过程中):
procedure TForm2.Timer1Timer(Sender: TObject);
var
i: integer;
affich:word;
begin
Shape1.Canvas.Clear;
Lapiste.display(shape1.Canvas);
Laboule.move(Coupcourant, Lapiste);
Laboule.display(Shape1.Canvas);
//LeTabQuilles.collision(CoupCourant);
for i := 1 to 10 do
begin
LeTabQuilles.tab[i].check(LaBoule, CoupCourant);
(LeTabQuilles.tab[i] as CQuille).display(shape1.Canvas);
end;
// ... (rest of the procedure)
绘图操作(.display)基本上在画布中绘制位图作为属性给出......