Ĺadny brzuch
Mam na formie wiele komponentów TImage. Na każym z nich w tym samym miescu usiłuje coś namalować (chodzi mi o to aby malować na wszytkich jednocześnie a nie na każdym z osobna. Wykombinowałem coś takiego:
var image : TImage; Begin Image.Canvas.Pen.Color:=ClYellow; Image.Canvas.Pen.Width:=1; Image.Canvas.Brush.Style:=bsClear; Image.Canvas.Pen.Style:=psSolid; Image.Canvas.Rectangle(0,0,13,22); end;
Ale to nie maluje. Jak się mogę odwołać do całej klasy TImage i malować po wszytkich Iamge?
Możesz stworzyć w pamięci canvasa, a potem (np. w pętli) każdemu timage przypisać ten canvas ;)
Możesz stworzyć w pamięci canvasa, a potem (np. w pętli) każdemu timage przypisać ten canvas ;)
Nie mam pojęcia jak mam to zrobić
var image : TCanvas; i: integer; Begin Image.Pen.Color:=ClYellow; Image.Pen.Width:=1; Image.Brush.Style:=bsClear; Image.Pen.Style:=psSolid; Image.Rectangle(0,0,13,22); for i:=0 to componentcount-1 do begin if not components[i] is TImage then continue; (components[i] as TImage).Canvas := Image; end; end;
Może coś takiego?
@cyrkiel: ojejku, czepiasz się, niedowidzenie moje :P
Użytkownik pbnan edytował ten post 15 listopad 2006, 18:03
var image : TCanvas; i: integer; Begin Image.Pen.Color:=ClYellow; Image.Pen.Width:=1; Image.Brush.Style:=bsClear; Image.Pen.Style:=psSolid; Image.Rectangle(0,0,13,22); for i:=0 to componentcount-1 do begin if not components[i] is TImage then continue; (components[i] as TImage).Canvas := Image; end; end;
Może coś takiego?
Niestety :(
Może coś takiego? Nawet canvasa nie stworzyłeś :>procedure TForm1.Button1Click(Sender: TObject); var c:tcanvas; b:tbitmap; i:integer; begin b:=tbitmap.Create; b.Width:=100; b.Height:=100; c:=tcanvas.Create; c.Handle:=b.Canvas.Handle; c.FillRect(c.ClipRect); c.Rectangle(10,10,70,20); for i:=0 to ComponentCount-1 do if Components[i] is timage then timage(Components[i]).Canvas.CopyRect(c.ClipRect,c,c.ClipRect); c.Free; b.Free; end;
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
var image : TImage; Begin Image.Canvas.Pen.Color:=ClYellow; Image.Canvas.Pen.Width:=1; Image.Canvas.Brush.Style:=bsClear; Image.Canvas.Pen.Style:=psSolid; Image.Canvas.Rectangle(0,0,13,22); end;
Ale to nie maluje. Jak się mogę odwołać do całej klasy TImage i malować po wszytkich Iamge?
Możesz stworzyć w pamięci canvasa, a potem (np. w pętli) każdemu timage przypisać ten canvas ;)
Możesz stworzyć w pamięci canvasa, a potem (np. w pętli) każdemu timage przypisać ten canvas ;)
Nie mam pojęcia jak mam to zrobić
var image : TCanvas; i: integer; Begin Image.Pen.Color:=ClYellow; Image.Pen.Width:=1; Image.Brush.Style:=bsClear; Image.Pen.Style:=psSolid; Image.Rectangle(0,0,13,22); for i:=0 to componentcount-1 do begin if not components[i] is TImage then continue; (components[i] as TImage).Canvas := Image; end; end;
Może coś takiego?
@cyrkiel: ojejku, czepiasz się, niedowidzenie moje :P
Użytkownik pbnan edytował ten post 15 listopad 2006, 18:03
var image : TCanvas; i: integer; Begin Image.Pen.Color:=ClYellow; Image.Pen.Width:=1; Image.Brush.Style:=bsClear; Image.Pen.Style:=psSolid; Image.Rectangle(0,0,13,22); for i:=0 to componentcount-1 do begin if not components[i] is TImage then continue; (components[i] as TImage).Canvas := Image; end; end;
Może coś takiego?
Niestety :(
Może coś takiego? Nawet canvasa nie stworzyłeś :>procedure TForm1.Button1Click(Sender: TObject); var c:tcanvas; b:tbitmap; i:integer; begin b:=tbitmap.Create; b.Width:=100; b.Height:=100; c:=tcanvas.Create; c.Handle:=b.Canvas.Handle; c.FillRect(c.ClipRect); c.Rectangle(10,10,70,20); for i:=0 to ComponentCount-1 do if Components[i] is timage then timage(Components[i]).Canvas.CopyRect(c.ClipRect,c,c.ClipRect); c.Free; b.Free; end;