[gelöst] Suche Bild-Kopierbefehl, der Bild direkt kopiert
-
- Beiträge: 286
- Registriert: Mi 16. Sep 2009, 14:15
- OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2
Re: [gelöst] Suche Bild-Kopierbefehl, der Bild direkt kopier
Ok, jetzt sieht es danach aus, als wäre es doch gelöst.
Danke.
Das Kopieren dauert nämlich nur beim ersten mal 1-2 Sekunden. Danach geht das kopieren Zeitgleich, würde ich sagen. Ärgerlich dass ich nicht eher auf die Idee gekommen bin, gleich mehrmaliges Kopieren während einer Sitzung zu probieren?
Allerdings das mit dem StretchBlt scheint nur dann zu funktionieren, wenn Quell- und Ziel-Koordinaten die gleichen sind. Ansonsten kommt irgendein Mischmasch bei mir heraus. Aber brauche dies derzeit eh nicht, und auch sonst bin ich derzeit darauf nicht angewiesen. Nutze jetzt dann eh
"Image1.Canvas.CopyRect(rect(0,0,100,100),Image2.Picture.PNG.Canvas,rect(0,0,100,100));"
Danke.
Das Kopieren dauert nämlich nur beim ersten mal 1-2 Sekunden. Danach geht das kopieren Zeitgleich, würde ich sagen. Ärgerlich dass ich nicht eher auf die Idee gekommen bin, gleich mehrmaliges Kopieren während einer Sitzung zu probieren?
Allerdings das mit dem StretchBlt scheint nur dann zu funktionieren, wenn Quell- und Ziel-Koordinaten die gleichen sind. Ansonsten kommt irgendein Mischmasch bei mir heraus. Aber brauche dies derzeit eh nicht, und auch sonst bin ich derzeit darauf nicht angewiesen. Nutze jetzt dann eh
"Image1.Canvas.CopyRect(rect(0,0,100,100),Image2.Picture.PNG.Canvas,rect(0,0,100,100));"
Lazarus 2.2.0 / FP 3.2.4
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: [gelöst] Suche Bild-Kopierbefehl, der Bild direkt kopier
Wie gesagt: Beim ersten Zeichnen auf einen Canvas, musst du alle Pixel auf dem Canvas mit einer Farbe Installisieren. Mit FillRect geht es ganz gut.Das Kopieren dauert nämlich nur beim ersten mal 1-2 Sekunden. Danach geht das kopieren Zeitgleich, würde ich sagen. Ärgerlich dass ich nicht eher auf die Idee gekommen bin, gleich mehrmaliges Kopieren während einer Sitzung zu probieren?
Das geht schon, schauen wir uns mal diese Funktionsaufruf an:Allerdings das mit dem StretchBlt scheint nur dann zu funktionieren, wenn Quell- und Ziel-Koordinaten die gleichen sind. Ansonsten kommt irgendein Mischmasch bei mir heraus. Aber brauche dies derzeit eh nicht, und auch sonst bin ich derzeit darauf nicht angewiesen. Nutze jetzt dann eh
Code: Alles auswählen
Image1.Canvas.CopyRect(rect(0,0,100,100),Image2.Canvas,rect(0,0,100,100));
z.b. so
statt 0,0,100,100 musst du dann eben 10,10,10+100,10+100 schreiben.
Ich hoffe du kannst folgen.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 286
- Registriert: Mi 16. Sep 2009, 14:15
- OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2
Re: [gelöst] Suche Bild-Kopierbefehl, der Bild direkt kopier
Nein, ich kann Dir gar nicht folgen.pluto hat geschrieben:Das geht schon, schauen wir uns mal diese Funktionsaufruf an:Allerdings das mit dem StretchBlt scheint nur dann zu funktionieren, wenn Quell- und Ziel-Koordinaten die gleichen sind. Ansonsten kommt irgendein Mischmasch bei mir heraus. Aber brauche dies derzeit eh nicht, und auch sonst bin ich derzeit darauf nicht angewiesen. Nutze jetzt dann ehHier musst du nicht nur die Left und Top anpassen sondern auch Right und Bottom(meine ich).Code: Alles auswählen
Image1.Canvas.CopyRect(rect(0,0,100,100),Image2.Canvas,rect(0,0,100,100));
z.b. so
statt 0,0,100,100 musst du dann eben 10,10,10+100,10+100 schreiben.
Ich hoffe du kannst folgen.
Ersten ist der Code falsch. Richtig ist:
Code: Alles auswählen
Image1.Canvas.CopyRect(rect(0,0,100,100),Image2.Picture.PNG.Canvas,rect(0,0,100,100));
Zweitens sprach ich von 'StretchBlt', der bei unterschiedlichen Quell- und Ziel-Koordinaten nicht klappt, was aber eh ein Befehl ist, denn ich zumindest vorerst eh nicht brauche.
Code: Alles auswählen
StretchBlt(Image1.Canvas.Handle, 0,0,100,100, Image2.Picture.PNG.Canvas.Handle, 0,0,100,100,SRCCOPY); // Das Geht.
StretchBlt(Image1.Canvas.Handle, 0,0,100,100, Image2.Picture.PNG.Canvas.Handle, 100,100,200,200,SRCCOPY); // Das nicht, bzw. die Kopie ist nur Geschmiere.
Lazarus 2.2.0 / FP 3.2.4
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: [gelöst] Suche Bild-Kopierbefehl, der Bild direkt kopier
Code: Alles auswählen
Image1.Canvas.CopyRect(rect(0,0,100,100),Image2.Picture.PNG.Canvas,rect(0,0,100,100));
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 286
- Registriert: Mi 16. Sep 2009, 14:15
- OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2
Re: [gelöst] Suche Bild-Kopierbefehl, der Bild direkt kopier
Ja, CopyRect.
Stretch brauche ich derzeit noch nicht.
Außerdem scheint StrecgtBlt, zumindest in Verbindung (bzw. beim Kopieren von Picture) eh verbugt zu sein.
Weil wenn ich das richtig verstehe, sollte das erste Image das sein, wo rein kopiert wird. Gefolgt von x und y Koordinaten. Dann wie breit und hoch es sein soll. Dann kommt die Quelle (wo man das Bild bezieht). Und auch dort das gleiche: x und y, so wie die Breite und Höhe des Ausschnitts. Bei mir macht er aber teils, was er will. Anpassen? Von wegen. Es kopiert meist nur. Oder packt das Ganze Bild dann in das kleine Image verkleinert rein. Und auch sonst stimmt vieles nicht. Und wenn die x,y Zahlen viel größer als die Breite und Höhe ist, jammert er was von Fehlender Datei oder irgendwas in der Richtung.
Stretch brauche ich derzeit noch nicht.
Außerdem scheint StrecgtBlt, zumindest in Verbindung (bzw. beim Kopieren von Picture) eh verbugt zu sein.
Weil wenn ich das richtig verstehe, sollte das erste Image das sein, wo rein kopiert wird. Gefolgt von x und y Koordinaten. Dann wie breit und hoch es sein soll. Dann kommt die Quelle (wo man das Bild bezieht). Und auch dort das gleiche: x und y, so wie die Breite und Höhe des Ausschnitts. Bei mir macht er aber teils, was er will. Anpassen? Von wegen. Es kopiert meist nur. Oder packt das Ganze Bild dann in das kleine Image verkleinert rein. Und auch sonst stimmt vieles nicht. Und wenn die x,y Zahlen viel größer als die Breite und Höhe ist, jammert er was von Fehlender Datei oder irgendwas in der Richtung.
Lazarus 2.2.0 / FP 3.2.4
-
- Beiträge: 286
- Registriert: Mi 16. Sep 2009, 14:15
- OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2
Re: [gelöst] Suche Bild-Kopierbefehl, der Bild direkt kopier
Glaube ich weiß jetzt, was los ist: StretchBlt kann vermutlich Picture-Formate nur kopieren, aber dessen Größe nicht verändern.
Somit hat sich der Befehl erledigt.
Somit hat sich der Befehl erledigt.
Lazarus 2.2.0 / FP 3.2.4