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));"
[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
Lazarus 2.2.0 / FP 3.2.4
-
- Lazarusforum e. V.
- Beiträge: 7178
- 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
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?
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.
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
Das geht schon, schauen wir uns mal diese Funktionsaufruf an:
Code: Alles auswählen
Image1.Canvas.CopyRect(rect(0,0,100,100),Image2.Canvas,rect(0,0,100,100));
Hier musst du nicht nur die Left und Top anpassen sondern auch Right und Bottom(meine ich).
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
pluto hat geschrieben: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
Das geht schon, schauen wir uns mal diese Funktionsaufruf an:Code: Alles auswählen
Image1.Canvas.CopyRect(rect(0,0,100,100),Image2.Canvas,rect(0,0,100,100));
Hier musst du nicht nur die Left und Top anpassen sondern auch Right und Bottom(meine ich).
z.b. so
statt 0,0,100,100 musst du dann eben 10,10,10+100,10+100 schreiben.
Ich hoffe du kannst folgen.
Nein, ich kann Dir gar nicht 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));
Beim zweiten Image (Quelle) darf "Picture" und das dazu passende Bildformat (in meinen Fall 'PNG') nicht fehlen. Sonst kopiert er wieder nur das, was er am Bildschirm sieht, statt dessen Inhalt von der Image-Komponente.
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: 7178
- 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));
Das war auf die Methode CopyRect beschränkt und nicht auf StretchBlt.
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