Я создал тестовый компонентСлишком много вызовов краска метод
unit Control1;
interface
uses
System.SysUtils, System.Classes, FMX.Types, FMX.Controls;
type
TTestComp = class(TControl)
private
i: integer;
protected
procedure Paint; override;
public
constructor Create(AOwner: TComponent); override;
published
property Width;
property Height;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Test', [TTestComp]);
end;
{ TTestComp }
constructor TTestComp.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
i := 0;
end;
procedure TTestComp.Paint;
begin
inherited;
inc(i);
canvas.BeginScene;
canvas.Fill.Color := $FF000000;
canvas.FillRect(localrect, 0, 0, [], 1);
canvas.Fill.Color := $FFFFFFFF;
canvas.FillText(localrect, IntToStr(i), false, 1, [], TTextAlign.Center);
canvas.EndScene;
end;
end.
Вот проблема:
- Компонент рисунок в верхнем левом углу
- Слишком много метод краски требует при изменении размеров формы ,
Просто изменить размер формы.
У меня есть много компонентов, построенных в соответствии с этим принципом. И когда я изменяю размер формы, они начинают отставать (Low FPS).
Стандартные компоненты (TButton и т.д.) работают нормально
Как определить, что Paint называется слишком много раз? Сколько раз он должен называться и сколько раз или называется? –
@DavidHeffernan посмотрите на процедуру Paint в моем методе. При каждом перекраске увеличивается значение var «I». –
Это вопрос, сколько раз он называется. Как вы можете определить, сколько раз ** следует вызывать **, и почему этот номер слишком велик. –