В программе друга, написанной на Паскале (базовая игра в боулинг), игровые элементы (мяч, фон и т. д.) отрисовываются на холсте TShape (Shape1.Canvas
)
Проблема в том, что элемент, нарисованный на этом холсте, обрезается в небольшой прямоугольник в верхнем левом холсте этого TShape. Посмотрите на этот скриншот:
Обратите внимание, что я уже видел такую проблему с другой программой Pascal, также использующей Lazarus / LCL (основную библиотеку графики / пользовательского интерфейса lazarus), и что эта программа для боулинга работает без каких-либо ошибок в 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) в основном рисуют растровые изображения на холсте, заданном как атрибут...
OnPaint
. Кажется, что форма закрашивает ваш элемент, но это всего лишь предположение. - person TLama   schedule 16.05.2012this project
в Linux ? - person TLama   schedule 16.05.2012