Wie kann ich schnell große bereiche einer grafik kopieren ?

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Benutzeravatar
theo
Beiträge: 10498
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

pluto hat geschrieben:das habe ich jetzt auch geschaft nur habe ich noch probleme mit der geschwindigkeit(*schnif*) komme da einfach nicht weiter !


Wie gesagt: Schneller als in meinem Beispiel geht's wohl nicht, es sei denn man hebelt die LCL aus.

Aber ich finde das nun wirklich ausreichend schnell. Hast du mein Beispiel genau nachgebaut? Ist das nicht schnell? Ist mit deiner Grafik alles in Ordnung?

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

!!!

Beitrag von pluto »

Code: Alles auswählen

procedure TPaintControl.Paint;
var
  dx,dy:Integer;
begin
  inherited Paint;
  dx:=0; dy:=0;
   if ismouseup = true then begin
     ismouseup:=false;
     buffer.canvas.copyrect(rect(mx,my,sx+1,sy+1),buffer2.canvas,rect(mx,my,sx+1,sy+1));
   end;
 
//  if t = true then begin
    if oldrect.Right-sx > 0 then
      dx:=oldrect.Right-sx
    else
     dx:=sx-oldrect.Right;
 
    if oldrect.Bottom-sy > 0 then
      dy:=oldrect.Bottom-sy
   else
      dy:=sy-oldrect.Bottom;
 
 
    oldrect.Right:=dx+oldrect.Right+1;
    oldrect.Bottom:=dy+oldrect.Bottom+1;
 
 
    buffer3.canvas.copyrect(oldrect,buffer.canvas,oldrect);
    t:=False;
//  end;
  t:=True;
  // buffer3.Canvas.Draw(0,0,Buffer);
 
  with Buffer2.Canvas do begin
    buffer2.Canvas.Brush.Style:=bsSolid;
    buffer2.Canvas.Brush.Color:=clWhite;
    Rectangle(0,0,buffer2.Width,buffer2.Height);
 
//    buffer2.canvas.copyrect(rect(mx,my,sx+1,sy+1),buffer.canvas,rect(mx,my,sx+1,sy+1));
 
    Brush.style:=bsClear;
    Pen.Style:=psDash;
    Pen.color:=clRed;
    Rectangle(mx,my,sx,sy);
 
    buffer3.canvas.copyrect(rect(mx,my,sx+1,sy+1),buffer2.canvas,rect(mx,my,sx+1,sy+1));
 
 
  //  canvas.copyrect(rect(mx,my,sx+1,sy+1),buffer3.canvas,rect(mx,my,sx+1,sy+1));
 
   Canvas.Draw(0,0,Buffer3);
  end;

auf diese art und weise geht es zwar ! sobalt ich aber die größe verwendere(maximieren klickte) .....
dann kann man die alte zeichen fläche wieder sehen....

das passiert beim vergrößern des forms:

Code: Alles auswählen

procedure TForm1.FormResize(Sender: TObject);
var
  ox,oy:Integer;
begin
  if Assigned(Buffer) then
  begin
  ox:=buffer.Width; oy:=buffer.Height;
  Buffer.Width:=Width;
  Buffer.Height:=Height;
  Buffer2.Width:=Width;
  Buffer2.Height:=Height;
  Buffer3.Width:=Width;
  Buffer3.Height:=Height;
 
  buffer.canvas.FillRect(ox,oy,Width,Height);
  buffer3.canvas.FillRect(0,0,Width,Height);
  buffer2.canvas.FillRect(0,0,Width,Height);
  canvas.FillRect(0,0,Width,Height);
  end;
end;

ich mache das so umstälich weil ich möchte mehre figuren zeichnen und nicht nur die aktuell !
die idee war folgende:
ich zeichne in einen buffer(buffer2) und davor lösche ich nur diesen buffer ständig !
jetzt gebe ich den inhalt aus buffer2 auf buffer3 aus und zeichne in anschließend auf den canvas !
sobalt ich die maustaste loslasse zeichne ich den inhalt von buffer2 auf buffer !
und genau hier liegt warscheinlich das problem:
ich kann buffer nicht einfach beim vergrößern neu installisieren per rechteck weil dann würde ja alles verschwinden was ich jemals gezeichne habe !

Eine andere idee währe noch folgene, ich weiß nur nicht wie ich sie umsetztne könnte/sollte:
ich zeichne im moment von Mausklick position bis tasäliche Mause Move position alles bei jeder mausbewegung neu, richtig ?
was währe wenn jetzt nicht von der Mausklick position alles neu zeichnen würde sondern von der "alten" position alles neu zeichnen würde... ich wette das würde ernorm viel cpu last sparen !!
problem dabe isi nur ich weiß nicht wie ich es umsetzten soll !!!
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10498
Registriert: Mo 11. Sep 2006, 19:01

Re: !!!

Beitrag von theo »

Ich hab dir gezeigt wie man schnell und flackerfrei was auf den Bildschirm kriegt.
Dein Programm musste aber schon selber ausdenken und schreiben. Das gehört nicht alles ins Forum.

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Das habe ich mir gedacht ! und es ging mir um nichts andres die ganze Zeit !
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich habe es auf deinen weg hinbekmmen !
allerdings musste ich ihn anpassen, hier der komplete code für eine "tip lib"
wenn hier so was eingefürht werden sollte:

Code: Alles auswählen

unit aaaUnit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls;
 
type
 
{ TPaintControl }
 
  TPaintControl=class (TCustomControl)
 
  public
    ismouseup:Boolean;
    procedure MouseDown(Button:TMouseButton;Shift: TShiftState; X,Y: Integer);  override;
    procedure MouseMove(Shift: TShiftState; X,Y: Integer);  override;
    procedure MouseUp(Button: TMouseButton; Shift:TShiftState; X,Y:Integer); override;
 
    procedure Paint; override;
  end;
 
 
  { TForm1 }
 
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormResize(Sender: TObject);
 
  private
    { private declarations }
    PainterControl: TPaintControl;
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
  mx, my,sx,sy:integer;
  Buffer,buffer2,buffer3:TBitmap;
 
implementation { TForm1 }
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  PainterControl := TPaintControl.Create(Self);
  PainterControl.Align := alClient;
  PainterControl.Parent := Self;
  PainterControl.DoubleBuffered := True;
  PainterControl.ismouseup:=False;
  Buffer:=TBitmap.create; Buffer2:=TBitmap.create; Buffer3:=TBitmap.create;
  mx:=200;my:=200; sx:=0; sy:=0;
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
  PainterControl.Free;
  Buffer.free;
  buffer2.free;
  buffer3.free;
end;
 
procedure TForm1.FormResize(Sender: TObject);
var
  ox,oy:Integer;
begin
  t:=true;
  if Assigned(Buffer) then
  begin
  ox:=buffer.Width; oy:=buffer.Height;
  Buffer.Width:=Width;
  Buffer.Height:=Height;
 
  Buffer2.Width:=Width;
  Buffer2.Height:=Height;
 
  Buffer3.Width:=Width;
  Buffer3.Height:=Height;
 
  buffer.canvas.FillRect(0,0,Width,Height);
  buffer3.canvas.FillRect(0,0,Width,Height);
  buffer2.canvas.FillRect(0,0,Width,Height);
  canvas.FillRect(0,0,Width,Height);
  mx:=0; my:=0; sx:=0; sy:=0;
 
  end;
end;
{ TPaintControl }
 
procedure TPaintControl.MouseDown(Button:TMouseButton;Shift: TShiftState; X,Y: Integer);
begin
  t:=true;
  if ssLeft in Shift then begin
  inherited MouseDown(Button,Shift,X,Y);
  mx:=x; my:=y;
 
  end;
end;
 
procedure TPaintControl.MouseMove(Shift: TShiftState; X, Y: Integer);
begin
  if ssLeft in Shift then begin
 
 
    sx:=x; sy:=y;
 
    inherited MouseMove(Shift, X, Y);
    Invalidate;
  end;
end;
 
procedure TPaintControl.MouseUp(Button: TMouseButton; Shift:TShiftState; X,Y:Integer);
begin
  inherited MouseUp(button,Shift, X, Y);
 
  ismouseup:=True;
  Invalidate
 
end;
 
procedure TPaintControl.Paint;
var
  r1:TRect;
begin
  inherited Paint;
  // sobalt die maustaste gedruckt wird bzw. wurde
  // wird der inhalt von buffer2 nach buffer kopiert(um ihn zu fixieren)
  if (ismouseup = true) then begin
    ismouseup:=false;
    r1.left:=mx;    r1.top:=my;
    // damit ich auch den rechten unt unteren rand
    // vom viereck erhalte muss ich hier die
    // alte position +1  nehmen(jeweils)
    r1.Right:=sx+1; r1.Bottom:=sy+1;
 
    // damit das viereck dauerhaft wird
    // wird es auf buffer kopiert !
    buffer.canvas.copyrect(r1,buffer2.canvas,r1);
  end;
 
   // damit ich was zu sehen bekomme wird das komplete
   // buffer nach buffer3 kopiert(weil ich kann ja buffer nicht immer andern)
   r1.left:=0; r1.top:=0; r1.Right:=Width; r1.Bottom:=Height;
   buffer3.canvas.copyrect(r1,buffer.canvas,r1);
 
  with Buffer2.Canvas do begin
    // um die alten recht ecke zu vermeiden
    // wird hier ein groeses viereck gezogen
    Brush.Style:=bsSolid;
    Brush.Color:=clWhite;
    Rectangle(0,0,Width,Height);
 
 
    Brush.color:=clRed;
    Brush.style:=bsSolid;
    Pen.Style:=psSolid;
    Pen.color:=clYellow;
    // das eigentliche viereck wird gezeichnet
    Rectangle(mx,my,sx,sy);
    // buffer2 wird anschliend nach buffer3 kopiert aber nur den teil
    // der sich geandert hat
    buffer3.canvas.copyrect(rect(mx,my,sx+1,sy+1),buffer2.canvas,rect(mx,my,sx+1,sy+1));
    // um es zu sehen wird der buffer komplet nach canvas(von form1 kopiert)
    Canvas.Draw(0,0,Buffer3);
  end;
 
end;
 
initialization
  {$I aaaUnit1.lrs}
 
end.

dieser code mach im moment das was ich möchte... ich muss ihn aber noch ausgibg testen !
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich habe einen seltsammen fehler den ich mir einfach nicht erklären kann, ich hoffe ihr könnt disen fehler richtig deuten:
der wenn ich ein copyrect zwischen zuweisungen von tbitmap variabeln packe dauert das füllen sehr lange...

packe ich das copyrect darunter geht das maximieren aber wenn ich das form verkleinern möchte ab einer bestimmten größe, sehe ich nur noch einen schwartzen bereich.... und ich weiß einfach nicht warum...

ich habe mal denn qullcode angeangen...

Code: Alles auswählen

// diese procedure soll denn komplenten buffer
// in buffer4 kopieren damit ich buffer cleraren kann
// und anschliessend sichere ich es zurueck !
// die beschrieben fehler treten nur auf wenn ich in buffer4 schreiben moechte
procedure TForm1.FormResize(Sender: TObject);
var
  arect:Trect;
begin
  if Assigned(Buffer) then begin
    t:=true;
 
    Buffer4.Width:=buffer.Width; Buffer4.Height:=buffer.Height;
 
    arect.left:=0; aRect.top:=0; arect.Right:=buffer4.Width; arect.Bottom:=buffer4.Height;
//    buffer4.canvas.FillRect(aRect);
    // wenn ich dieses copyrect nehme geht das maximieren langsamm
    // aber der fehler mit dem schwartzen rand ab einer bestimmten groese(wenn ich
    // das form verkleinere)
    buffer4.canvas.CopyRect(aRect,buffer.canvas,aRect);
 
 
 
    Buffer.Width:=Width;Buffer.Height:=Height; Buffer2.Width:=Width;Buffer2.Height:=Height;
    Buffer3.Width:=Width;Buffer3.Height:=Height;
 
 
   // setzte ich das copyrect hier in dann geht das maxiermieren
   // aber sobalt ich jetzt das form verkleinere bekomme ich einen schwartzen
   // rand
    arect.left:=0; aRect.top:=0; arect.Bottom:=Height; arect.Right:=Width;
 
 
 
    buffer.canvas.FillRect(arect); buffer3.canvas.FillRect(arect); buffer2.canvas.FillRect(arect);
    Screen.Forms[0].Caption:=IntTostr(aRect.left) + '\' + IntTostr(aRect.Top) + '\' + IntTostr(aRect.Right) + '\' + IntTostr(aRect.Bottom);
 
 
//    buffer.canvas.draw(0,0,buffer4);
    arect.left:=0; aRect.top:=0; arect.Right:=buffer4.Width; arect.Bottom:=buffer4.Height;
 
    buffer.canvas.CopyRect(aRect,buffer4.canvas,aRect);
    mx:=0; my:=0; sx:=0; sy:=0;
    t:=false;
 
 
  end;
end;

edit: kleiner qullcode fehler(zuviel qullcode kopiert)
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

habe es auf diesen weg hinbekommen:

Code: Alles auswählen

// diese procedure soll denn komplenten buffer
// in buffer4 kopieren damit ich buffer cleraren kann
// und anschliessend sichere ich es zurueck !
// die beschrieben fehler treten nur auf wenn ich in buffer4 schreiben moechte
procedure TForm1.FormResize(Sender: TObject);
var
  arect:Trect;
begin
  if Assigned(Buffer) then begin
    t:=true;
 
    Buffer4.Width:=panel1.Width; Buffer4.Height:=panel1.Height;
    buffer4.Canvas.FillRect(0,0,buffer4.Width,buffer4.Height);
    arect.left:=0; aRect.top:=0; arect.Right:=buffer4.Width; arect.Bottom:=buffer4.Height;
    buffer4.canvas.CopyRect(aRect,buffer.canvas,aRect);
 
 
 
    Buffer.Width:=panel1.Width;Buffer.Height:=panel1.Height; Buffer2.Width:=panel1.Width;Buffer2.Height:=panel1.Height;
    Buffer3.Width:=panel1.Width;Buffer3.Height:=panel1.Height;
 
    arect.left:=0; aRect.top:=0; arect.Bottom:=panel1.Height; arect.Right:=panel1.Width;
 
 
 
    buffer.canvas.FillRect(arect); buffer3.canvas.FillRect(arect); buffer2.canvas.FillRect(arect);
    Screen.Forms[0].Caption:=IntTostr(aRect.left) + '\' + IntTostr(aRect.Top) + '\' + IntTostr(aRect.Right) + '\' + IntTostr(aRect.Bottom);
 
 
//    buffer.canvas.draw(0,0,buffer4);
    arect.left:=0; aRect.top:=0; arect.Right:=buffer4.Width; arect.Bottom:=buffer4.Height;
 
    buffer.canvas.CopyRect(aRect,buffer4.canvas,aRect);
    mx:=0; my:=0; sx:=0; sy:=0;
    t:=false;
 
 
  end;
end;

allerdins ist es manchmal immer noch etwas langsamm beim maixmieren(aber nicht immer)

ich hatte ganze vergessen das ich auf ein panel zeichne und nicht aufs form kein wunder das es nicht geklappt hat !
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

WARNSIN ! du hattes vollkommen recht !

ich habe überaschenderweise zwei tests gemacht.....
der deiner genau wie du vorgeschlagne hattes abgeleitet von CustomControl und zeichnen direckt auf dem panel.

den zweiten mit einer Paintbox... auf die gleiche art und weise, fast nur das diesesmal alles in Form1 drin statt !

ich habe beide projekte gepackt !

das eine heißt aaa* und das andere "paintprojekttest1".
Dateianhänge
aaaprojekt.zip
ohne paintbox nur mit panel
(53.78 KiB) 73-mal heruntergeladen
paintprojekttest.zip
mit paintbox und sehr langsam !
(55.8 KiB) 74-mal heruntergeladen
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Es gibt mittlerwile eine Scanline implementierung für TBitmap keine ahnung ob die wirklich schnell ist oder nur aus kompatibilitätsgründen aber du kannst es ja mal probiern ...
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10498
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

pluto hat geschrieben:WARNSIN ! du hattes vollkommen recht !


Sag ich doch! :P

Haste das etwa erst jetzt bemerkt? :wink:

@Christian: Wenn du damit Plutos Projekt meinst: Er will ja mit den Canvas Methoden zeichnen. Da hilft Scanline nicht viel. Und schneller als Draw oder CopyRect ist Scanline bestimmt nicht.

Benutzeravatar
theo
Beiträge: 10498
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

@pluto:

Deine Demo läuft ja schon ganz ordentlich.
Was du allerdings mit 4 Puffern machst und warum bei Resize soviel kopiert und gepinselt wird ist mir nicht ganz klar.
Ich hab's allerdings nicht genau analysiert. Kommt mir aber spanisch vor.

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Eigentlich ist das ganz einfach und zwar:
im beispiel wird Buffer2 Städig gelöscht und neugezeichnet !
als erstes wird komplet buffer nach buffer3 kopiert.
jetzt wird buffer2 nach buffer3 kopiert und anschlied wird buffer3 ausgeben...
das mache ich weil ich möchte nicht buffer ständig löschen da kommen nur sachen rein die fixiert sind d.h. die feritg gezeichnet sind !.

buffer4 brauche ich fürs das ändern der zeichnefläche größe:
ich kopiere buffer nach buffer4 nach dem ich buffer4 auf die größe von buffer gesetzt habe und einmal fillrect gemacht habe !

jetzt wird von buffer, buffer2, buffer3 die größen gesetzt und anschließdn wird der gesicherte inhalt von buffer4 nach buffer zurück kopiert !

allerdings hatte dieses "verfahren" auch sehr viele nachteile wie ich jetzt bei meinem paint2 projekt festgesetllt habe:
dort habe ich das verfahren richtig" reingeschrieben" und beim vergrößern daurt das jetzt d.h. wenn ich die zeichenfläche vergrößere dauert es bzw. stock es !

naja mal sehen ob ich es nach hinbekomme !

ich dachte bis jetzt eine paintbox ist zum zeichnen da aber da liege ich wohl falsch und alle andren auch *G*
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10498
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

pluto hat geschrieben: beim vergrößern daurt das jetzt d.h. wenn ich die zeichenfläche vergrößere dauert es bzw. stock es !


Joh, nur was ich mich dumpf an Windows Paint erinnern kann (übrigens nicht wirklich ein gutes Vorbild) ändert das die Grösse der Zeichenfläche ja auch nicht bei Form-Resize sondern die ist doch fix bis man sie ausdrücklich ändert (neue Pixel-Dimensionen), oder?
Jedenfalls "normale" Bildverarbeitungs-programme machen das so.

pluto hat geschrieben:ich dachte bis jetzt eine paintbox ist zum zeichnen da aber da liege ich wohl falsch und alle andren auch *G*


Na, geht ja eigentlich schon. Ist aber eher was für Kinder ;-)

Übrigens noch zu den Puffern: Du hast doch so schöne Zeichenobjekte.
Warum malst du dass Ganze im Zweifel (Bei Resize oder so) nicht einfach neu?
Ich würde eventuell nur einen zusätzlichen "Cache Puffer" halten, mit dem Abbild aller bereits gezeichneten Objekte und darauf das neue Objekt pappen um die Geschwindigkeit zu erhöhen. Dann bei Abschluss der aktuellen Zeichenaktion wiederum das neue Cache-Puffer Bild erzeugen.
Ich würde diesen Puffer als sehr flüchtig betrachten, halt nur für Geschwindigkeit.
Auf Resize würde ich aus oben genanntem Grund keine besondere Rücksicht nehmen (Geschwindigkeitsmässig).

P.S: Du müsstest natürlich zu diesem Zweck deine Objekte mit mehr Information versehen (Rahmefarbe, Füllfarbe, Form (Kreis, Ellipse, Rechteck), z-Index etc).
Alternativ könntest du auch für jedes Objekt ein Bitmap halten, falls du das mit der Transparenz hinkriegst. Dann müsstest du nur noch alle Objekte auf die Richtige Position "drawen", das könnten dann auch Fotos etc. sein.

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Code: Alles auswählen

P.S: Du müsstest natürlich zu diesem Zweck deine Objekte mit mehr Information versehen (Rahmefarbe, Füllfarbe, Form (Kreis, Ellipse, Rechteck), z-Index etc).

das ist sowieso schon.
ich speicher zu jeden objekt:
Position
Size
Brush
Pen
Visible
Makiert oder nicht makiert
Typ(also obj kreis, viereck oder sonstwas
und neuerdings auch
Raster ob eins angezeigt werden soll

und später möchte ich noch zu jedem objekt ein bmp hinzufügen !
evlt. hast du recht ! mit den buffer's

komischerweise funktniert es in den test projekt sehr gut nur nicht im "wirklichen" projekt wo ich es einbauen wollte...

Ich habe noch herrausgefunden wenn ich paint direkt aufurfe dauert es sogar noch länger als wenn ich inval.... aufrufe !

zu den buffern nochmal was:

ich möchte eigentlich nur Buffer2 städnig aktuallsiern aber buffer nicht wo die fixierten objekte drauf sind !

du meinst ich könnte einfach den panel direkt verwenden mit nur einmen buffer !

werde ich gleich mal testen !
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7180
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Habe den fehler in meinem projekt gefunden !
es geht auf dieser art und weise wensehtlich schneller ! also zuvor !
ich werde das gesammte paint2 projekt bald wieder hochladen.......

allerdins habe ich noch probleme mehre objekte zu makieren: früher war es einfach:
einfach in einer forschleife prüfen welche objekte makiert sind(es ja schon alles vorbereitet, und es ging ja auch schon vor der änderung) aber ne schleife wollte ich eigegntlich vermeiden !
mal sehen !!!!!
MFG
Michael Springwald

Antworten