[gelöst] Probleme mit Canvas/Image und Ausführung.

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Erwin
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] Probleme mit Canvas/Image und Ausführung.

Beitrag von Erwin »

Mathias hat geschrieben:Ich habe auch schon sehr viele Stunden mit Bitmap gekämpft, aber so richtig schlau bin ich noch nicht geworden. Hast du weiter oben nicht mal noch was von Alpha-Blending geschrieben, dann kommt man mit den Standard-Funktionen von Lazarus sowieso in eine Sackgasse.
Ich weis nicht was dein Ziel ist. Wen es um ein Grafik-Programm geht, würde ich mal BGRABitmap genauer angucken. Und wen es sehr schnell gehen soll, dann OpenGL.

Bei mir sind es inzwischen schon Tage. Die meiste Zeit ging dadurch drauf, weil ich je nach dem nach paar Sekunden, oder gar erst nach Minuten lesen dann feststellen musste, dass dieser Such-Treffer doch nicht mit meinem Problem zu tun hat.
Und auch sonst ist Image sehr verwirrend.
So weit ich es verstanden habe, hat dies 3 Canvas. Eines Direkt, eines für die Picture oder Grafic? Und eines dann noch für Bitmap, PNG und noch ein Format, wo jedes ein Canvas hat.
Picture hat kein CopyRect. PNG hingegen schon. Aber wenn ich von dem einem Image aus dem PNG kopiere und dies dann ins Ziel-Image ins PNG rein kopiere, kommt dort nichts an. Also geht es nur von Quelle.Picture.PNG.Canvas direkt auf Ziel.Canvas. Wieso dies also dann wiederum falsch sein soll, ... ? Und je mehr ich dann durch die Suche hie und da etwas mitlese, desto verwirrter werde ich. Weil Jeder hat andere Ansichten, aber scheinbar kaum wirkliches Wissen. Oder ist es gar schlimmer: Nämlich umgekehrt? Was würde dies dann für die Programmiere bedeuten?

Achja, mit einem weiterem Image geht es wunderbar. Naja, was solls. Ich hatte vor Jahren mal für ein eher einfaches Programm (Delphi 3) dermaßen viele Objekte gebraucht, dass der Rechner kaum in der Lage war, es zu kompilieren.
Aber vielleicht kann man Heute ja sogar über 1 000 rein packen? Aber gefallen tut mir der Gedanke dennoch nicht. So was bremst alles doch sicher aus?

Von BGRABitmap habe ich schon gehört. Habe sogar einen Link dazu von der Lazarus-Wiki mir bei der Gelegenheit, als ich drüber stolperte, gemacht. Aber noch nicht zum lesen gekommen. Aber wenn mich nicht alles täuscht, ist dies eh eine Externe Komponente?
Ich habe einfach zu oft schlechte Erfahrungen mit Externen Erweiterungen und Co gemacht, was meist mit Neuinstallation des Programms/BS endete. Je nach dem für was es gedacht war. ich weiß nicht wieso, aber solche Dinge hassen mich, und ich sie. Will so was eher nur dann einsetzen, wenn es wirklich nicht mehr anders geht.
Lazarus 2.2.0 / FP 3.2.4

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: [gelöst] Probleme mit Canvas/Image und Ausführung.

Beitrag von Mathias »

Und eines dann noch für Bitmap, PNG und noch ein Format, wo jedes ein Canvas hat.
PNG hatte ich bis jetzt nie im Pfad verwenden müssen. Aber mit CopyRect hatte ich auch schon gekämpft. Es tönt etwas komisch, aber als letzte Alternative bin ich schon bis zum RawImage runter gegangen.

Von BGRABitmap habe ich schon gehört. Habe sogar einen Link dazu von der Lazarus-Wiki mir bei der Gelegenheit, als ich drüber stolperte, gemacht. Aber noch nicht zum lesen gekommen. Aber wenn mich nicht alles täuscht, ist dies eh eine Externe Komponente?
Ich habe einfach zu oft schlechte Erfahrungen mit Externen Erweiterungen und Co gemacht, was meist mit Neuinstallation des Programms/BS endete. Je nach dem für was es gedacht war. ich weiß nicht wieso, aber solche Dinge hassen mich, und ich sie. Will so was eher nur dann einsetzen, wenn es wirklich nicht mehr anders geht.

Ja sie ist extern, aber eine sehr gute und gepflegte Komponente. Wieso sie nicht direkt in Lazarus integriert ist, kann ich nicht sagen. Aber immerhin kann man sie über den Online Package-Manager nach installieren.

Aber kannst du mal sagen, was dein Ziel ist, vielleicht wird dann CopyRect und Konsorten gar nicht gebraucht ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Erwin
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] Probleme mit Canvas/Image und Ausführung.

Beitrag von Erwin »

Mathias hat geschrieben:Aber kannst du mal sagen, was dein Ziel ist, vielleicht wird dann CopyRect und Konsorten gar nicht gebraucht ?

Umgehen, wenn es nur allein darum ging, kann man dies ohne weiteres. Aber einer der wichtigsten Eigenschaften einer Programmiersprache ist für mich jene, dass das compilierte Programm aus nur einer Ausführbaren Datei besteht. Da kann auch schwer irgendwann was verloren gehen, sondern entweder hat man dann das Programm, oder nicht. Und damit mein (irgendwann?) fertiges Programm ebenfalls aus nur einer Datei besteht, werden die Bilder bereits bei der Erstellung geladen. Müssen also nicht extra mitgegeben werden. Und damit dann anderseits nicht für jedes Kleine Bild ein Extra Image im Programm ist, was ja bestimmt dann nach und nach wiederum alles verlangsamen würde, wird halt in vielen Fällen ein großes Image genutzt, vom dem je nach Bedarf der aktuell benötigte Ausschnitt raus kopiert wird.
Hm... oder kann es sein, dass es kaum eine Rolle spielt, ob zum Beispiel ein Großes Image (zb. 320*32 Pixel), oder stattdessen 10 Kleine (32x32 Pixel) im Programm sind?

Edit: Spielt es eine Rolle,ob ein Image Visilbe True oder False ist, was den Aufwand für den Rechner betrifft?
Lazarus 2.2.0 / FP 3.2.4

Erwin
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] Probleme mit Canvas/Image und Ausführung.

Beitrag von Erwin »

gelöscht, weil zitiert wurde
Zuletzt geändert von Erwin am Sa 30. Jun 2018, 10:21, insgesamt 1-mal geändert.
Lazarus 2.2.0 / FP 3.2.4

Erwin
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] Probleme mit Canvas/Image und Ausführung.

Beitrag von Erwin »

Sorry, statt ändern hatte ich vorhin sogar 2mal Zitieren geklickt???
Naja, ab und zu hat man halt einen 'Aussezter'.
Oder mein Browser spinnt wieder mal?
Lazarus 2.2.0 / FP 3.2.4

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: [gelöst] Probleme mit Canvas/Image und Ausführung.

Beitrag von m.fuchs »

Erwin hat geschrieben:Und damit dann anderseits nicht für jedes Kleine Bild ein Extra Image im Programm ist, was ja bestimmt dann nach und nach wiederum alles verlangsamen würde, wird halt in vielen Fällen ein großes Image genutzt, vom dem je nach Bedarf der aktuell benötigte Ausschnitt raus kopiert wird.
Hm... oder kann es sein, dass es kaum eine Rolle spielt, ob zum Beispiel ein Großes Image (zb. 320*32 Pixel), oder stattdessen 10 Kleine (32x32 Pixel) im Programm sind?

Ich verstehe dich nicht. Auf der einen Seite gibst du klar zum Ausdruck, dass du keine Lust hast tiefer in die Programmierung einzusteigen und nur dein Programm erstellen möchtest.
Auf der anderen Seite baust du eine komplizierte Kopierroutine anstatt einfach zehn Images auf ein Form zu knallen. Warum? Um ein paar Byte zu sparen?

Das größte Problem bei deinen Anfragen besteht darin, herauszufinden was du möchtest. Und das ist auch der Grund warum hier viele der Meinung sind, du solltest doch tiefer in die Materie eintauchen. Mit unkonkreten Fragen kann dir keiner eine einfache Antwort geben, die dein Problem auch vollumfänglich löst. Beispielsweise:
Erwin hat geschrieben:Edit: Spielt es eine Rolle,ob ein Image Visilbe True oder False ist, was den Aufwand für den Rechner betrifft?

Ja. Nein. Vielleicht.

Was ist denn "Aufwand für den Rechner" deiner Meinung nach?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
kupferstecher
Beiträge: 418
Registriert: Do 17. Nov 2016, 11:52

Re: [gelöst] Probleme mit Canvas/Image und Ausführung.

Beitrag von kupferstecher »

So geht es bei mir (Windows), siehe unten. So viel ich weiß ist TImage ein Wrapper für verschiedene Bilddateien (png,jpg,bmp...), wobei nur das aktuell verwendete Format les- und schreibbar ist. Zumindest unter Windows aber zusätzlich die Bitmap, daher kann man auf ihr, bzw. ihrem Canvas arbeiten. Um sicher zu gehen würde ich es allerdings auch wie wp_xyz machen, d.h. auf einem selbst erzeugten Bitmap arbeiten und das dann dem Image zuweisen.

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var xy: Integer;
begin
  xy:= StrToInt(Edit1.Text); //Zu kopierende Groesse aus Edit1 lesen.
 
  Image2.Picture.Bitmap.Width:= xy;
  Image2.Picture.Bitmap.Height:= xy;
  Image2.Picture.Bitmap.Canvas.CopyRect(Rect(0,0,xy,xy), Image1.Picture.Bitmap.Canvas, Rect(0,0,xy,xy))// 2
  Image2.Picture.Bitmap.TransparentColor:= clGreen; // $FFB27F;
  Image2.Transparent:= true;
end;   

Erwin
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] Probleme mit Canvas/Image und Ausführung.

Beitrag von Erwin »

m.fuchs hat geschrieben:Ich verstehe dich nicht. Auf der einen Seite gibst du klar zum Ausdruck, dass du keine Lust hast tiefer in die Programmierung einzusteigen und nur dein Programm erstellen möchtest.
Auf der anderen Seite baust du eine komplizierte Kopierroutine anstatt einfach zehn Images auf ein Form zu knallen. Warum? Um ein paar Byte zu sparen?

Ja, um paar Bytes und Arbeit für den Computer zu sparen. Und diese Paar können sich je nach dem Schnell auf 1 000 anstatt nur 100 (Images) summieren.
Übrigens: Ich verstehe jetzt nicht, was du mit komplizierte Kopierroutine meinst. Das ist jetzt für mich nicht klar verständlich.
Also wenn Du mit komplizierte Kopierroutine den Kopiervorgang selbst meinst, ja das scheint mir selber ... inzwischen eher Gewöhnungsbedürftig zu sein. Das hätte ich mir von der Programmiersprache selber doch etwas einfacher vorgestellt, aber vor allem zumindest von einem meiner 5 Bücher genauer erklärt, dann wäre es ebenfalls nicht wirklich kompliziert, wenn man es erst mal richtig verklickert bekommt.
Falls Du eher den Teil meinst, das sich damit befasst, dass jedes mal nach Bedarf das richtige Teilstück heraus kopiert wird, mit so was habe ich kaum Probleme. Weil die Gesamt-Regel dazu steht ja fest und habe diese gut verstanden. Der Rest hängt dann von der Fähigkeit des Abstrakten (?, heißt das so? Oder komplizierten?) denken ab. Und darin war ich angeblich schon immer gut.

Zu Kompliziert fällt mir meine Schulzeit ein. Anstatt dass man 7+8 zusammenzählte, meinte der Lehrer, man sollte sich einfach halber 7 Äpfel und 8 Äpfel vorstellen. Ich musste dann immer erst die Äpfel weg denken, weil 7+8 (ohne den Ballast der Äpfel) einfacher zusammen zählen lies. Und dann eben Äpfel wieder hinzufügen. Paar mal habe ich dann sogar, anstatt zusammen zu zählen, gedanklich die Äpfel durch gezählt, und konnte das Ergebnis gedanklich nicht richtig greifen (weil es waren ja keine wirklichen Äpfel da).

Mit Komponenten etc. ist es halt das selbe. Ein Befehl bewirkt was. Darauf kommt es mir an. Sich damit zu befassen, wie oder wieso das passiert, lenkt mich nur ab. Und wenn es nicht ging, brachte das nachforschen auch nichts. Meist waren die Antworten darauf keine Antworten, sondern viel mehr ein Hinweis auf die nächste tiefere Ebene des Ganzen, welches nicht selten ein offenes Ende hatte (also plötzlich vor dem Ziel in der Lektüre abbrach).

m.fuchs hat geschrieben:Das größte Problem bei deinen Anfragen besteht darin, herauszufinden was du möchtest. Und das ist auch der Grund warum hier viele der Meinung sind, du solltest doch tiefer in die Materie eintauchen. Mit unkonkreten Fragen kann dir keiner eine einfache Antwort geben, die dein Problem auch vollumfänglich löst.

Das ist eine zu einfache Schuldzuweisung. Ich hingegen habe eher den Eindruck, dass man mich missversteht.
Ein Beispiel, was ich damit meine: Wenn man fragt, soll ich es Rot malen. Wenn dies ein Verrückter Autofan den andern Fragt, kann damit nur das Auto gemeint sein. Bei Mottorradfans das Motorrad. Wenn aber Autofan den Motorradfan das selbe fragen, treten meist erst mal Missverständnisse auf.
In den Ruhigen Stunden bin ich mir dessen sogar Teils bewusst: Lazarus ist ein Sprache für Datenbanken. Und nicht für Spiele. Schon von daher habt Ihr scheinbar andere Vorstellungen vom Ganzen, was man also mit einer Frage meint, bzw. was man für ein Ziel hat.
Hinzu kommt, dass ich es möglichst so gestalten will, dass das fertige Programm möglichst wenig Ressourcen vom Computer braucht, und alles aus nur eine Datei besteht. Etwas worum ihr Euch scheinbar nicht sorgt?
Des weiteren scheinen die meisten von Euch Eure Probleme lieber dadurch zu lösen, bzw. lösen diese dadurch, dass ihr den Code zu den Befehlen durchsucht, ich hingegen will entweder wissen; geht es damit überhaupt, gibt es eine Alternative, oder eben eine Schritt für Schritt Hilfe, mit Erklärung dazu, was jeder der einzelnen neuen Befehle am Ende der Code-Kette macht. Button.Caption:='Hallo', schreibt am 'Ende' der Code-Kette eben das Wort Hallo auf das Button. Das ist alles was ich brauche, um damit klar zu kommen. Mehr dazu ... ich kann es nicht wirklich erklären, schon gar nicht schriftlich. Es ergibt für mich keinen Sinn, zu wissen, wie das von 0 und 1 an funktioniert. Und bestimmt weiß dies auch kaum Jemand von Euch (0 und 1). Ihr habt bestimmt da selber ein Grenze, wo ihr sagt: Noch weiter will ich in die Materie wirklich nicht eintauchen. irgendwo ist doch auch für Euch dann Schluss. Ich habe meine auf Grund meiner Erfahrung eben recht weit oben die Grenze.

Je mehr ich schreibe, desto mehr denke ich, dass ich einerseits doch mit einer anderen Programmiersprache und Forum besser aufgehoben wäre: Nämlich mit einer, die auf Spiele ausgerichtet ist. Denke, dass man dort auch besser die Fragen und Ziele untereinander versteht, und auch im Vorfeld viele Fragen gar nicht aufkommen, weil dort auch andere Beispiele und direkte Befehle gibt, als für Datenbanken-Programmiersprachen.

m.fuchs hat geschrieben:Beispielsweise:
Erwin hat geschrieben:Edit: Spielt es eine Rolle,ob ein Image Visilbe True oder False ist, was den Aufwand für den Rechner betrifft?

Ja. Nein. Vielleicht.

Was ist denn "Aufwand für den Rechner" deiner Meinung nach?

Ursprünglich dachte ich es, es wäre klar. Eben wie insgesamt die 'Resourcen' des Rechner beeinflusst.
Aber jetzt wo ich am Konkretisieren bin, stellte ich fest, dass es ein Irrtum ist. Zumindest kommen mir da jetzt direkte Fragen in den Sinn.
Ein Bild von z.B. 5 000 x 5 000. Braucht es unterschiedliche viele Resourcen, zwischen Sichtbar und Unsichtbar?
Braucht es unterschiedlich viel Zeit, zum Aufbauen des Programms/Darstellung, auch dann, wenn es Left auf 5 000 ist, also (vermutlich) außerhalb des Bildschirms?
Kann man Theoretisch 1 000 mal 5k*5k große Bilder mit der Einstellung: visilbe:=false in ein Programm packen, ohne dass sich das bemerkbar macht?
Oder gibt es Grenzen, so dass ich ab einer Bestimmten Anzahl+Größe nicht darum herum komme, die Vorstellung von einer Datei aufzugeben, und zumindest Bilder, die erst während des Laufens geladen werden, mitzugeben?
Lazarus 2.2.0 / FP 3.2.4

Erwin
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] Probleme mit Canvas/Image und Ausführung.

Beitrag von Erwin »

kupferstecher hat geschrieben:So geht es bei mir (Windows), siehe unten. So viel ich weiß ist TImage ein Wrapper für verschiedene Bilddateien (png,jpg,bmp...), wobei nur das aktuell verwendete Format les- und schreibbar ist. Zumindest unter Windows aber zusätzlich die Bitmap, daher kann man auf ihr, bzw. ihrem Canvas arbeiten. Um sicher zu gehen würde ich es allerdings auch wie wp_xyz machen, d.h. auf einem selbst erzeugten Bitmap arbeiten und das dann dem Image zuweisen.

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var xy: Integer;
begin
  xy:= StrToInt(Edit1.Text); //Zu kopierende Groesse aus Edit1 lesen.
 
  Image2.Picture.Bitmap.Width:= xy;
  Image2.Picture.Bitmap.Height:= xy;
  Image2.Picture.Bitmap.Canvas.CopyRect(Rect(0,0,xy,xy), Image1.Picture.Bitmap.Canvas, Rect(0,0,xy,xy))// 2
  Image2.Picture.Bitmap.TransparentColor:= clGreen; // $FFB27F;
  Image2.Transparent:= true;
end;   

Ähnliches habe ich selber schon als für mich persönlich gelöst geschrieben. Aber in meinen Fall habe ich noch vor dem Kopieren Transparent auf false gesetzt. Also scheinbar muss man dies nicht machen? Wenn man insgesamt, bzw. abschließend True macht, geht es also auch dann, wenn es bereits vorher schon auf True war?

Ich kann das andere aber nicht nachvollziehen: Wieso auf einem selbst gebastelten Bitmap arbeiten? In beiden Fällen kopiere ich doch von der Quelle in ein anderes Bitmap/Image? Wieso nicht gleich direkt von der Quelle ins Ziel? Wieso auf Umwegen?
In Beiden Fällen wird es doch aus .Picture.PNG.Canvas kopiert?
... achne, nirgendwas war das anders. Dieser Assign-Befehl? War der jetzt vom Canvas. oder von Bitmap.Canvas?
Aber ich sehe es bis jetzt so: Das eine mag zwar von Picture.PNG.Canvas in die direkte Canvas von anderem Image kopieren. Aber das andere indirekt, auf Umwegen. Und ich weiß immer noch nicht, was verkehrt daran ist, direkt in die erstere Canvas zu kopieren, wo dies ganze sogar ein Standardbefehl ist. Jedenfalls hat einer der beiden anderen (Picture oder PNG) gar kein CopyRect, und das andere geht nicht. Wenn es so, wie ich es derzeit mache, falsch sein soll, wieso haben die dann die Image nicht um das passende CopyRect erweitert? Es ergibt für mich kein Sinn. Über Umwegen ist für mich eher eine Notlösung, weniger die Richtige Art und Weise.
Lazarus 2.2.0 / FP 3.2.4

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: [gelöst] Probleme mit Canvas/Image und Ausführung.

Beitrag von Mathias »

Hm... oder kann es sein, dass es kaum eine Rolle spielt, ob zum Beispiel ein Großes Image (zb. 320*32 Pixel), oder stattdessen 10 Kleine (32x32 Pixel) im Programm sind?
Wen ich viele gleich grosse Images, dann würde ich eine ImageList nehmen, da fällt die ganze kopiererrei weg.

So viel ich weiß ist TImage ein Wrapper für verschiedene Bilddateien (png,jpg,bmp...), wobei nur das aktuell verwendete Format les- und schreibbar is

Nicht ganz, es ist TPicture.
TImage ist nur eine Komponente, mit der man einfach ein TImages aufs Form setzen kann.
Der ganze Baum sieht bis zu den Rohdaten so aus: Image.Picture.Bitmap.RawImage.Data
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: [gelöst] Probleme mit Canvas/Image und Ausführung.

Beitrag von m.fuchs »

Erwin hat geschrieben:Der Rest hängt dann von der Fähigkeit des Abstrakten (?, heißt das so? Oder komplizierten?) denken ab. Und darin war ich angeblich schon immer gut.

Aber nur angeblich.

Erwin hat geschrieben:Mit Komponenten etc. ist es halt das selbe. Ein Befehl bewirkt was. Darauf kommt es mir an. Sich damit zu befassen, wie oder wieso das passiert, lenkt mich nur ab.

Heißt übersetzt: du willst programmieren, aber nicht verstehen wie das geht.

Erwin hat geschrieben:Das ist eine zu einfache Schuldzuweisung. Ich hingegen habe eher den Eindruck, dass man mich missversteht.

Ja natürlich, wenn Fragen seltsam formuliert werden, dann kommt es zu Missverständnissen.

Erwin hat geschrieben:In den Ruhigen Stunden bin ich mir dessen sogar Teils bewusst: Lazarus ist ein Sprache für Datenbanken. Und nicht für Spiele.

Und wieder einmal gefährliches Nichtwissen. Wie kommst du darauf?

Erwin hat geschrieben:Des weiteren scheinen die meisten von Euch Eure Probleme lieber dadurch zu lösen, bzw. lösen diese dadurch, dass ihr den Code zu den Befehlen durchsucht, ich hingegen will entweder wissen; geht es damit überhaupt, gibt es eine Alternative, oder eben eine Schritt für Schritt Hilfe, mit Erklärung dazu, was jeder der einzelnen neuen Befehle am Ende der Code-Kette macht.

Es gibt keine Schritt-für-Schritt-Erklärung die alles auf einfachsten Niveau erklärt. Erst recht nicht, wenn die Problemstellung unklar formuliert ist. Das ist einfach nicht möglich.

Erwin hat geschrieben:Je mehr ich schreibe, desto mehr denke ich, dass ich einerseits doch mit einer anderen Programmiersprache und Forum besser aufgehoben wäre: Nämlich mit einer, die auf Spiele ausgerichtet ist. Denke, dass man dort auch besser die Fragen und Ziele untereinander versteht, und auch im Vorfeld viele Fragen gar nicht aufkommen, weil dort auch andere Beispiele und direkte Befehle gibt, als für Datenbanken-Programmiersprachen.

Viel Spaß. Mit deiner Einstellung und deinem vorhanden Wissen wirst du dort ganz sicher interessante Erfahrungen machen. Und feststellen dass die Hilfsbereitschaft hier deutlich höher als anderswo ist. Zumindest ist mir bisher noch kein vergleichbares Niveau untergekommen.

Erwin hat geschrieben:
m.fuchs hat geschrieben:Was ist denn "Aufwand für den Rechner" deiner Meinung nach?

Ursprünglich dachte ich es, es wäre klar. Eben wie insgesamt die 'Resourcen' des Rechner beeinflusst.
Aber jetzt wo ich am Konkretisieren bin, stellte ich fest, dass es ein Irrtum ist. Zumindest kommen mir da jetzt direkte Fragen in den Sinn.
Ein Bild von z.B. 5 000 x 5 000. Braucht es unterschiedliche viele Resourcen, zwischen Sichtbar und Unsichtbar?

Was sind Resourcen? RAM-Belegung, Dateigröße, Prozessorauslastung, Laufzeit?

Erwin hat geschrieben:Braucht es unterschiedlich viel Zeit, zum Aufbauen des Programms/Darstellung, auch dann, wenn es Left auf 5 000 ist, also (vermutlich) außerhalb des Bildschirms?

Ja und nein. Die Ladezeit ist länger (ob merklich hängt vom System ab), gezeichnet werden nicht-sichtbare Elemente aber nicht.

Erwin hat geschrieben:Kann man Theoretisch 1 000 mal 5k*5k große Bilder mit der Einstellung: visilbe:=false in ein Programm packen, ohne dass sich das bemerkbar macht?
Oder gibt es Grenzen, so dass ich ab einer Bestimmten Anzahl+Größe nicht darum herum komme, die Vorstellung von einer Datei aufzugeben, und zumindest Bilder, die erst während des Laufens geladen werden, mitzugeben?

Natürlich gibt es Grenzen. Du kannst dir ja mal ausrechnen wieviel Byte bei dieser Anzahl von Bilder zusammenkommen. Bei deinem Beispiel macht sich das definitiv bemerkbar.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Erwin
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] Probleme mit Canvas/Image und Ausführung.

Beitrag von Erwin »

Mathias hat geschrieben:
Hm... oder kann es sein, dass es kaum eine Rolle spielt, ob zum Beispiel ein Großes Image (zb. 320*32 Pixel), oder stattdessen 10 Kleine (32x32 Pixel) im Programm sind?
Wen ich viele gleich grosse Images, dann würde ich eine ImageList nehmen, da fällt die ganze kopiererrei weg.

ImageList? Aber natürlich! Das ist ja dies, was für Animationen genutzt wird, aber dies wiederum einen Code-Ablauf braucht, bei dem die Bilder dann 'heraus kopiert' werden. Oder so ähnlich. Ja, dass müsste man auch dafür verwenden können.
Beansprucht so was mehr Ressourcen als Image, oder gar weniger?
Oder mach ich mir in der Heutigen Zeit von schnellen Computer mir da zu viel Gedanken?
Oder sollte ich anfangen, mich damit doch erst dann zu beschäftigen, wenn mein Rechner langsamer wird. Programme die mit Lazarus gestartet werden, laufen doch in der Regel langsamer, als wenn man sie direkt startet, oder?

Edit: Danke, Mathias.
Zuletzt geändert von Erwin am Sa 30. Jun 2018, 15:03, insgesamt 1-mal geändert.
Lazarus 2.2.0 / FP 3.2.4

Erwin
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] Probleme mit Canvas/Image und Ausführung.

Beitrag von Erwin »

m.fuchs hat geschrieben:
Erwin hat geschrieben:Der Rest hängt dann von der Fähigkeit des Abstrakten (?, heißt das so? Oder komplizierten?) denken ab. Und darin war ich angeblich schon immer gut.

Aber nur angeblich.

Das haben Andere zu mir gesagt. Und anderem mein Informatik-Lehrer.

m.fuchs hat geschrieben:
Erwin hat geschrieben:Mit Komponenten etc. ist es halt das selbe. Ein Befehl bewirkt was. Darauf kommt es mir an. Sich damit zu befassen, wie oder wieso das passiert, lenkt mich nur ab.

Heißt übersetzt: du willst programmieren, aber nicht verstehen wie das geht.

Ich will das Auto fahren, aber wüsste nicht, wozu ich unbedingt wissen muss, wieso es fährt?
Oder weißt Du, wie Dein Kühlschrank geht? Dein Ofen? Deine Heizung?

m.fuchs hat geschrieben:
Erwin hat geschrieben:Das ist eine zu einfache Schuldzuweisung. Ich hingegen habe eher den Eindruck, dass man mich missversteht.

Ja natürlich, wenn Fragen seltsam formuliert werden, dann kommt es zu Missverständnissen.

Die einen Verstehen die Fragen, die anderen eben nicht. Du meinst wohl, weil Du Fragen Beantwortest, kann im Falle eines Missverständnis nie der Lehrer einen Fehler gemacht haben. Das stimmt aber so nicht.

m.fuchs hat geschrieben:
Erwin hat geschrieben:In den Ruhigen Stunden bin ich mir dessen sogar Teils bewusst: Lazarus ist ein Sprache für Datenbanken. Und nicht für Spiele.

Und wieder einmal gefährliches Nichtwissen. Wie kommst du darauf?

Delphi behauptet dies selber von sich. Und Lazarus behauptet, so weit ich weiß, dass sie das Gegenstück zu Delphi ist, aber eben Free und Open.
Viele Bücher zu Delphi befassen sich viel mehr mit Datenbanken. Grafik meist nur wenn es um malen geht.
In einer anderen Sprache (BlitzBasic? MaxBasic?), ich weiß es nicht mehr genau. Da war eines der ersten Programmbeispiele ein kleines total einfaches Ballerspiel. Welches ich innerhalb einer halben Stunde erfolgreich nach schreiben konnte.
Bei Lazarus hingegen habe ich kein solches Beispiel gefunden. Und für Delphi sieht es da auch eher schwach aus.
All dies und auch die Fragen, die hier gestellt werden, spricht teils schon für sich, dass Lazarus für Spiele nicht geeignet ist. Jedenfalls scheinen sich hier nicht viele Spielentwickler zu tummeln. Nur überwiegend jene, die dies als Hausaufgabe haben.
Hinzu kommen die Probleme, dich ich habe, wenn ich was in der Richtung machen will. Konkret: Kein einfaches per einer Code-Zeile machbares kopieren von Alphakanalen. Meiner Meinung nach für eine Sprache für Spiele eher undenkbar.

m.fuchs hat geschrieben:
Erwin hat geschrieben:Des weiteren scheinen die meisten von Euch Eure Probleme lieber dadurch zu lösen, bzw. lösen diese dadurch, dass ihr den Code zu den Befehlen durchsucht, ich hingegen will entweder wissen; geht es damit überhaupt, gibt es eine Alternative, oder eben eine Schritt für Schritt Hilfe, mit Erklärung dazu, was jeder der einzelnen neuen Befehle am Ende der Code-Kette macht.

Es gibt keine Schritt-für-Schritt-Erklärung die alles auf einfachsten Niveau erklärt. Erst recht nicht, wenn die Problemstellung unklar formuliert ist. Das ist einfach nicht möglich.

Unklar Formuliert? Oder ist es nicht eher so, dass man meine Probleme schlicht und ergreifend meist nicht nachvollziehen kann?
Man, wenn ich Fragen stellte, schreibe ich meist eine gute Halbe Stunde daran, um auf Nummer sicher zu gehen, dass man mich versteht. Und dann wird dennoch von Euch einiges an Infos, die ich in der Fragestellung mit erwähnte, ignoriert.

m.fuchs hat geschrieben:
Erwin hat geschrieben:Je mehr ich schreibe, desto mehr denke ich, dass ich einerseits doch mit einer anderen Programmiersprache und Forum besser aufgehoben wäre: Nämlich mit einer, die auf Spiele ausgerichtet ist. Denke, dass man dort auch besser die Fragen und Ziele untereinander versteht, und auch im Vorfeld viele Fragen gar nicht aufkommen, weil dort auch andere Beispiele und direkte Befehle gibt, als für Datenbanken-Programmiersprachen.

Viel Spaß. Mit deiner Einstellung und deinem vorhanden Wissen wirst du dort ganz sicher interessante Erfahrungen machen. Und feststellen dass die Hilfsbereitschaft hier deutlich höher als anderswo ist. Zumindest ist mir bisher noch kein vergleichbares Niveau untergekommen.

Hilfsbereitschaft? Mag sein. Aber was nützt einem diese, wenn man ständig aneinander vorbei schreibt. Da kann dann weniger Hilfsbereitschaft insgesamt besser sein, wenn man sich dafür gut versteht, und somit einem wirklich geholfen wird.

m.fuchs hat geschrieben:
Erwin hat geschrieben:
m.fuchs hat geschrieben:Was ist denn "Aufwand für den Rechner" deiner Meinung nach?

Ursprünglich dachte ich es, es wäre klar. Eben wie insgesamt die 'Resourcen' des Rechner beeinflusst.
Aber jetzt wo ich am Konkretisieren bin, stellte ich fest, dass es ein Irrtum ist. Zumindest kommen mir da jetzt direkte Fragen in den Sinn.
Ein Bild von z.B. 5 000 x 5 000. Braucht es unterschiedliche viele Resourcen, zwischen Sichtbar und Unsichtbar?

Was sind Resourcen? RAM-Belegung, Dateigröße, Prozessorauslastung, Laufzeit?

Du machst es wieder! Du willst mich nicht verstehen. So groß ist der Unterschied zwischen den Einzelnen Dingen nicht. Das kann man doch einfach zusammen fassen, und sagen, insgesamt wird der Rechner dann ca. X % langsamer sein.
Oder du beantwortest gleich alles. Außerdem selbst wenn ich daran gedacht hätte, so hätte ich mir schwer vorstellen können, dass man so was beantworten kann, bzw. dies bis in diese Detail weiß. Und es erscheint mir auch nicht wirklich nötig. Naja, Ram vielleicht noch extra.
Das hier erinnert mich an den einem Film, wo die Frau Erde in die Hand nahm, und dazu (weiß nicht mehr weshalb sie das sagte), 'sie mal Erde' sagte.
Ihr Mann verbesserte sie: "Das heißt, die Erde"' Wobei er den Planet Erde meinte. Sie dachten in kleinen Dinge, er in großen.
Du denkst und schreibst immer von den möglichst kleinsten Detail. Für Dich steht mit Sicherheit kein Computer, Laptop etc. auf den Tisch. Sondern Gehäuse, Graka, Festplatte, Prozessor etc. Und wehe Dem, der Dich fragt, ob dein Rechner schnell läuft ... (Prozessor, Festplatte, Graka, oder was meint der Fragesteller damit?).

m.fuchs hat geschrieben:
Erwin hat geschrieben:Braucht es unterschiedlich viel Zeit, zum Aufbauen des Programms/Darstellung, auch dann, wenn es Left auf 5 000 ist, also (vermutlich) außerhalb des Bildschirms?

Ja und nein. Die Ladezeit ist länger (ob merklich hängt vom System ab), gezeichnet werden nicht-sichtbare Elemente aber nicht.

Das ist mal eine Antwort mit der ich was anfangen kann.
Also auch unsichtbares wird beim Starten geladen, aber natürlich nicht gezeichnet. Geht also schneller als mit Sichtbare, aber beansprucht dennoch auch seine Zeit. So dass man auch bei Unsichtbaren Objekten sparsam sein sollte, wenn es um Geschwindigkeit etc. geht.
Danke.
Bist Dir auch sicher, dass ich Richtig gefragt habe? Hätte ich nicht auch noch dazu erwähnen sollen, wie viel von dem Bild im Image durchsichtig ist? Was für Farben es hat? Was für ein Format? etc.

m.fuchs hat geschrieben:
Erwin hat geschrieben:Kann man Theoretisch 1 000 mal 5k*5k große Bilder mit der Einstellung: visilbe:=false in ein Programm packen, ohne dass sich das bemerkbar macht?
Oder gibt es Grenzen, so dass ich ab einer Bestimmten Anzahl+Größe nicht darum herum komme, die Vorstellung von einer Datei aufzugeben, und zumindest Bilder, die erst während des Laufens geladen werden, mitzugeben?

Natürlich gibt es Grenzen. Du kannst dir ja mal ausrechnen wieviel Byte bei dieser Anzahl von Bilder zusammenkommen. Bei deinem Beispiel macht sich das definitiv bemerkbar.

Danke.
Und auch hier musstest nicht wissen, welche Bilder? etc.?
Lazarus 2.2.0 / FP 3.2.4

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: [gelöst] Probleme mit Canvas/Image und Ausführung.

Beitrag von Mathias »

Lazarus ist ein Sprache für Datenbanken. Und nicht für Spiele.

Du wirst kaum etwas finden, was mehr Leistung hat als FPC. Gut man kann sagen C/C++, aber dies ist etwa gleich schnell wie FPC.
Nicht vergessen, bei FPC kannst du auch sehr einfach Assembler-Blöcke einbauen, wem man alles aus dem Rechner raus holen will. :wink:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: [gelöst] Probleme mit Canvas/Image und Ausführung.

Beitrag von Mathias »

ImageList? Aber natürlich! Das ist ja dies, was für Animationen genutzt wird, aber dies wiederum einen Code-Ablauf braucht,

Dies Ausgabe mit ImageList geht sehr einfach, es wird nur die Position und der Index auf das Bild gebraucht. 0 ist das erste Bild in der Liste.

Code: Alles auswählen

procedure TForm1.FormPaint(Sender: TObject);
const
  x = 10;
  y = 20;
begin
  ImageList1.Draw(Canvas, x, y, 0);
end
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten