Witam.
W delphi kiedy miałem komponent (dziedziczył po panelu) i miał w sobie panel kiedy chcę go narysować kilka razy (PaintTo..) to nie ma najmniejszego problemu.
W lazarusie kiedy mam podobny komponent i chcę żeby rysował w sobie kilka razy ten panel (rysuję bitmapę ponieważ lazarus nie ma PaintTo..) komponent cały czas się odświeża. W lazarusie nie ma tego błędu co w delphi. i za każdym razem kiedy coś dorysuję do komponentu w funkcji Paint on odświeża panel który ma w sobie przez co widać jak panel w komponencie miga. Jak można rozwiązać taki problem? (w poprawnie działającym Paint w lazarus - w delphi można było wykorzystać błąd... Undecided)
procedure TList.Paint();
var
x, y, i: integer;
begin
inherited;
if assigned(FElement) then
begin
felement.Color:=clblue;
FElement.Paint;
felement.Canvas.Clear;
for i:=1 to 3 do
for x:=1 to felement.Width-1 do
for y:=1 to felement.Height-1 do
canvas.Pixels[x, (i*felement.Height)+y]:=felement.Canvas.Pixels[x, y];
end;
felement.Color:=clred;
FElement.Paint;
felement.Canvas.Clear;
end;
Kiedy komponent się rysuje to wychodzą:
-czerwony panel
-3 niebieskie
czyli tak jak powinno być
ale ten czerwony się rysuje kilka razy. i jak się odświerza na formatce to "mruga". Nie wiem jak to rozwiązać. CZy można jakoś zablokować rysowanie Panelu (felement)??
// ktoś rozumie w jakim języku (nie mówie o języku programowania) jest napisany ten post? - Q