Pascal で書かれた友人のプログラム (基本的なボウリング ゲーム) では、ゲーム要素 (ボール、背景など) が TShape のキャンバスに描画されます ( Shape1.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)は、基本的に属性として与えられたキャンバスにビットマップを描画します...