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

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

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

Beitrag von wp_xyz »

Und um bei dem Beispiel zu bleiben: Wenn du dann noch in der Buchhandlung den Verkäufer anschnauzt, was das denn für ein Sch... Laden ist, wird er besonders motiviert sein, dich gut zu beraten? Wie man in den Wald hineinruft, so kommt es zurück.

So - Ende für mich. Ich klinke mich aus diesem Thread aus...

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: [geändert] Probleme mit Canvas/Image und Ausführung.

Beitrag von Erwin »

Also das D von DX steht also für Distanc? Ok, aber Distanz zu was? Von daher für mich eben schwer nachvollzieber. Also wird es schon der Fensterrahmen sein, worum es da geht, wenn es mal funktioniert.

m.fuchs hat geschrieben:
Erwin hat geschrieben:Das hier erinnert mich eher an den Vorfall vor einer Woche in meiner Buchhandlung, wo ich nach einem Buch über KI fragte. Dort meinte die Verkäuferin, dass es dazu 1 200 Treffer gibt, und ich solle [ohne dem Wort: Bitte] vorher auf Amazon nachsehen, was für ein Buch ich dann haben will.

Ich steige mal auf diesen Off-Topic-Teil ein, weil ich glaube dass das auch tatsächlich dein Problem ist. Dein Wunsch ist ungefähr so, als wenn ich in die Buchhandlung gehe und nach einem Kochbuch frage. Auch dann wird das Angebot sehr breit gefächert sein und ohne nähere Angabe (asiatisch? italienisch? arabisch? Fleisch? Vegan? et.c) werde ich keine klare Empfehlung vom Buchhändler bekommen. Und bei einem Fachthema wie KI wird dir ein Mitarbeiter einer Standardbuchhandlung keinen Ratschlag geben können. Wie auch im Forum gilt hier: mehr Output für mehr Input.

Die konnte es gar nicht genauer eingrenzen. Ich habe nämlich auch nach gezielte KI (da gibt es ja mehre unterschiedliche) gefragt.
Von sich aus konnte sie mir auch nicht sagen, was vorhanden ist. Also ob es 'asiatisch? italienisch? arabisch? Fleisch? Vegan? etc.' gibt.
Sie hat mir erklärt, dass es nur nach Titeln sucht. Naja, was nicht stimmt. Weil es sucht bestimmt auch nach Autor und Verlag.
So bald ich nach KI und Delphi fragte, waren es 0 Treffer.
Sie hat sich nicht mal die mühe gemacht, mir zumindest ein paar zu zeigen. Hätte sie das gemacht, wäre bestimmt eines dabei gewesen, das ich genommen hätte, zu mal ich ja gar eine feste Vorstellung (Autor: Schnelldenker, nur FCP-Code, Jahr 2014, Verlag: Super-Programme, etc.) hatte, sondern nur ungefähr (Auto: egal, Code: Pascal-Ähnlich, Verlag: Egal). Aber selbst danach konnte sie nicht suchen,und wollte mir halt nicht helfen. Punkt.
Sondern entweder dann 1 200 Titel, wo sie mir kein Einziges mir mal anschauen lassen wollte, oder gleich ISBN (über Amazon). Ich würde so was als Verkäufer nicht machen.
Lazarus 2.2.0 / FP 3.2.4

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: [geändert] Probleme mit Canvas/Image und Ausführung.

Beitrag von mse »

Erwin hat geschrieben:Also das D von DX steht also für Distanc? Ok, aber Distanz zu was? Von daher für mich eben schwer nachvollzieber. Also wird es schon der Fensterrahmen sein, worum es da geht, wenn es mal funktioniert.

Bitte beantworte meine Frage:
Was siehst du hier?
function OffsetRect(var Rect: TRect; DX: Integer; DY: Integer): Boolean;

OffsetRect offsets the rectangle Rect by a horizontal distance DX and a vertical distance DY. [...]

Bitte versuche in deinen Worten formulieren, was die zwei Zeilen für dich bedeuten. Bitte erinnere dich, das ist die Funktionerklärung der Funktion "OffsetRect()" welche wp_xyz zitiert hat.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: [geändert] Probleme mit Canvas/Image und Ausführung.

Beitrag von wp_xyz »

Erwin hat geschrieben:Also das D von DX steht also für Distanc? Ok, aber Distanz zu was? Von daher für mich eben schwer nachvollzieber. Also wird es schon der Fensterrahmen sein, worum es da geht, wenn es mal funktioniert.

Oh Mann, du bist wirklich eine harte Nuss! "D" wie "Delta". Verschiebe das Rechteck UM X=10 Pixel - da ist es egal wo es ist. Wenn das Rechteck R so deklariert ist: Left=10, Top=10, Right = 100, Bottom=150, und du verschiebst es per OffsetRect(R, X, Y) um X=10 Pixel und Y=20 Pixel, dann ist es hinterher bei Left=10+10=20, Top=10+20=30, Right=100+10=110, Bottom=150+20=170. Normalerweise gibt es solche Textaufgaben in der Grundschule (lange her...).

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 »

mse hat geschrieben:
Erwin hat geschrieben:Also das D von DX steht also für Distanc? Ok, aber Distanz zu was? Von daher für mich eben schwer nachvollzieber. Also wird es schon der Fensterrahmen sein, worum es da geht, wenn es mal funktioniert.

Bitte beantworte meine Frage:
Was siehst du hier?
function OffsetRect(var Rect: TRect; DX: Integer; DY: Integer): Boolean;

OffsetRect offsets the rectangle Rect by a horizontal distance DX and a vertical distance DY. [...]

Bitte versuche in deinen Worten formulieren, was die zwei Zeilen für dich bedeuten. Bitte erinnere dich, das ist die Funktionerklärung der Funktion "OffsetRect()" welche wp_xyz zitiert hat.

Also auf den ersten Blick bedeutet das für mich, dass OffesetRect als erstes die Angaben eines Rechtecks erwartet. Normalerweise Variable TRect oder 'Rect(x,y,xe,ye)'. Aber in dem Fall geht da bei mir nur eine TRect-Variable. Gefolgt von 2 weiteren Integer-Angaben (also Zahlen).
Weiter unten steht was von Horizontal Distance gefolgt von DX. Also wird da das D vermutlich für Distance in dem Fall stehen. Weil meist ja nur x oder y dort steht in ähnlichen Beispielen. Vertical ist Vertical. Weiter heißt da, wenn mein schlechtes Englisch nicht täuscht, das OffsetRect mittels DX und DY um dessen Distanz-Angaben versetzt gesetzt wird? Also gehe ich davon aus, dass man eine Distanz mit dazu rechnen muss. Oder Abziehen. Aber Distanz zu was? Die der Eltern-Komponente, die des Fensters? Oder gar des Bildschirms?


wp_xyz hat geschrieben:
Erwin hat geschrieben:Also das D von DX steht also für Distanc? Ok, aber Distanz zu was? Von daher für mich eben schwer nachvollzieber. Also wird es schon der Fensterrahmen sein, worum es da geht, wenn es mal funktioniert.

Oh Mann, du bist wirklich eine harte Nuss! "D" wie "Delta". Verschiebe das Rechteck UM X=10 Pixel - da ist es egal wo es ist. Wenn das Rechteck R so deklariert ist: Left=10, Top=10, Right = 100, Bottom=150, und du verschiebst es per OffsetRect(R, X, Y) um X=10 Pixel und Y=20 Pixel, dann ist es hinterher bei Left=10+10=20, Top=10+20=30, Right=100+10=110, Bottom=150+20=170. Normalerweise gibt es solche Textaufgaben in der Grundschule (lange her...).

? Und das soll mir jetzt was sagen?
Wenn man es um x Pixel verschiebt, verschiebt es sich um x Pixel?
Oh man, Du kannst so was ja ganz schlecht erklären, finde ich.
Ok, wenn das so ist, dann ist es doch besser, wenn Du einem auf das restliche Internet verweist.
Oder kann es ein, dass Du gar nicht mehr weiß, was mal meine Frage diesbezüglich war? Und auch nicht mehr weißt, dass ich inzwischen längst anderweitig dessen Antwort fand?

Und noch was: Bei meinen eigentlichen Programm ist es egal, welche Daten/Zahlen man für DX und DY her nimmt. Sobald ich beim Image.Copy-Befehl Die Daten für das Ziel (Zwischenbild) Direkt eingebe (0,0,32,32) kopiert es immer richtig. Wenn ich aber eine TRect-Variable nehmen, wird es immer schwarz. In Beiden Fällen ist es, wie gesagt, egal was ich für DX und DY Daten ich eintrage.
Und so bald ich das Pixelformat dem Zwischenbild zuweise, geht gar nichts. Und ohne dem erkennt er den Alphakanal nicht.
Lazarus 2.2.0 / FP 3.2.4

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

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

Beitrag von mse »

Erwin hat geschrieben:Also auf den ersten Blick bedeutet das für mich, dass OffesetRect als erstes die Angaben eines Rechtecks erwartet. Normalerweise Variable TRect oder 'Rect(x,y,xe,ye)'. Aber in dem Fall geht da bei mir nur eine TRect-Variable. Gefolgt von 2 weiteren Integer-Angaben (also Zahlen).

Die erste Zeile ist der Kopf (Declaration) der beschriebenen Funktion. Den findet man in den Lazarus/Free Pascal Quellen genau so. Zur Vollständigkeit nochmals der gesamte Text von dem wp_xyz zitiert hat:
http://lazarus-ccr.sourceforge.net/docs ... trect.html

Code: Alles auswählen

 
OffsetRect
 
Offset the rectangle
Declaration
 
Source position: types.pp line 299
 
function OffsetRect(
  var Rect: TRect;
  DX: Integer;
  DY: Integer
):Boolean;
 
Description
 
OffsetRect offsets the rectangle Rect by a horizontal distance DX and a vertical distance DY. The operation returns True if the operation was successfull, false if it was not (only possible if the address of Rect is Nil).
 
See also
PtinRect
[...]   
 

rtl/objpas/types.pp enthält die Funktion:

Code: Alles auswählen

 
function OffsetRect(var Rect : TRect;DX : Integer;DY : Integer) : Boolean;
begin
  if assigned(@Rect) then
    begin
    with Rect do
      begin
      inc(Left,dx);
      inc(Top,dy);
      inc(Right,dx);
      inc(Bottom,dy);
      end;
    OffsetRect:=true;
    end
  else
    OffsetRect:=false;
end;
 

Weiter heißt da, wenn mein schlechtes Englisch nicht täuscht, das OffsetRect mittels DX und DY um dessen Distanz-Angaben versetzt gesetzt wird?

Genau. Unter "Description" wird die Funktion der function()/procedure() beschrieben, wobei auf die Parameter Bezug genommen wird.
Gesetzt der Fall die Deklaration wäre:

Code: Alles auswählen

 
function OffsetRect(var Rect: TRect; Hansli: Integer; Vreneli: Integer) : Boolean;
 

wäre die "Description":

Code: Alles auswählen

 
OffsetRect offsets the rectangle Rect by a horizontal distance Hansli and a vertical distance Vreneli.
 

Die meisten Funktionsbeschreibungen sind nach diesem Muster gestrickt. Die Free Pascal Funktionen/Prozeduren sind hier beschrieben:
https://www.freepascal.org/docs-html/cu ... dex-8.html
Weitere Dokumentation:
https://www.freepascal.org/docs.var
vor allem
https://www.freepascal.org/docs-html/cu ... f/ref.html
wo die Programmiersprache beschrieben wird.
Nochmals der Hinweis, dass direkte Google Suche meist bessere Ergebnisse als die Verwendung der Forensuche bringt.
Also gehe ich davon aus, dass man eine Distanz mit dazu rechnen muss. Oder Abziehen. Aber Distanz zu was? Die der Eltern-Komponente, die des Fensters? Oder gar des Bildschirms?

Das scheint mir am Schwanz aufgezäumt. OffsetRect() kann dann verwendet werden, wenn ein "TRect" um einen beliebigen X/Y-Distanz verschoben werden muss. Im Beispiel scheint das der Fall zu sein. Wie gross die Verschiebung sein muss und wie man zum entsprechenden Wert kommt findet man natürlich nicht in der Funktionsbeschreibung von OffsetRect().
In der Grafikverarbeitung werden von verschieden Elementen häufig auch verschiedene Nullpunkte der Koordinatensysteme verwendet. OffsetRect() kann nun dazu verwendet werden, eine Rechteckbeschreibung aus dem einen Koordinatensystem in einem Anderen zu verwenden.

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 »

Wen man dies Sourcen von OffsetRect anguckt, sieht man was dies Funktion macht.

Code: Alles auswählen

function OffSetRect(var ARect: TRect; dx,dy: Integer): Boolean;
Begin
  with ARect do
  begin
    Left := Left + dx;
    Right := Right + dx;
    Top := Top + dy;
    Bottom := Bottom + dy;
  end;
  Result := (ARect.Left >= 0) and (ARect.Top >= 0);
end;   


Interessant, die Funktion ist in den Sourcen sogar doppelt vorhanden. Einmal in LCLProc und einmal in Types. Wobei die in Types ein wenig anders aussieht:

Code: Alles auswählen

function OffsetRect(var Rect : TRect;DX : Integer;DY : Integer) : Boolean;
begin
  if assigned(@Rect) then
    begin
    with Rect do
      begin
      inc(Left,dx);
      inc(Top,dy);
      inc(Right,dx);
      inc(Bottom,dy);
      end;
    OffsetRect:=true;
    end
  else
    OffsetRect:=false;
end;   

Für was es ein Assigned für eine Record braucht ?
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 »

Hallo mse.

Also was den Link zu FreePascal betrifft, der verwirrt mich. Weil auf deren Seite ist ja auch ein Link zu deren Wiki, wo ich in den letzten Wochen ebenfalls oft ohne Ergebnis gesucht habe. Ich ging auch davon aus, dass unter vor allem unter Wiki alles Beschrieben wird.
Die ist also ein Irrtum, sondern es wird unter Docs beschrieben?
Aber inzwischen sollte mich ja nicht mal so was mehr wundern.

Was Deine Beschreibung/Erklärung betrifft, Du hast scheinbar meine Frage wirklich nicht verstanden.
Mich interessiert es, wie man damit 'Fahrt', also anwendet. Nicht was unter der 'Autohaube', also was von woher kommt, ist, und auch erst recht nicht, wie alle dies entstanden ist.
Das Erinnert mich daran, als ich wissen wollte, was Parent macht, und man mir Antwortete, dass dies zu erklären zu lange dauert, weil man mir ... VCL? oder war es LCL erklären müsste. Parent weißt dem Objekt ein Elternobjekt (wie Panel etc.) zu. So einfach wäre die Antwort damals gewesen. Zum Glück stand dies doch noch in einem meiner 5 Bücher drin. Mit einem Satz, mehr brauchte es auch nicht.

Ich nutze Programmiersprachen eben damit ich mich nicht mit 0 und 1 auseinandersetzten muss. Dies ist auch die Grundidee für die Entwicklung von Compilern und Programmiersprachen gewesen.
Klar kann man irgendwann, wenn man weiß, was die 0 dort und die 1 hier macht, in dem man dann nur noch sich eben anschauen muss, was da an 0 und 1 ist, vielleicht sogar schneller feststellen, was das Teil kann.
Aber dies ist für mich zu umständlich, weil ... entweder baue ich etwas, oder ich nutze es. Ok, in seltenen Fällen auch beides. Aber eine Programmiersprache will ich nicht entwickeln. Das würde mir zu lange dauern, falls ich überhaupt einen Anfang schaffen würde.
Und obwohl ich durchaus weis, was das eine oder andere bewirkt, kann ich mir daraus schwerlich ein Gesamtbild zusammensetzen.
Was mir auffällt: 'with ARect do ...' da gibt es doch Jemanden hier der sich darüber bestimmt aufregt?
Oder verwechsle ich da was? Kann man in dem Fall statt 'with ARect do' auch 'ARect.Left :=' machen, oder doch nicht?
Und +dy zum normalen Top und Co? Dann ist das der Grund, wieso es versetzt ist? Wieso, wenn man dann meist dies doch wiederum zurück setzt? Und wieso ist es überall dieses extra dx und dy?
Und inc? Von was?
Also bis man da durch ist, hätte man einem längst erklären können, wie man dies Handhabt. Und was es macht. ... . Mit machen, meine ich nicht, den Code selbst etc. Sondern ... für mich ist es so banal, was ich damit meine. Eben ob es dann die Kopie in die Grafik des Imageas kopiert, oder dann doch wiederum nur auf die Canvas. So was in der Art. Und nur darum (um diese beiden Dinge) geht es mir vor allem. Wie nutzte ich es. Was bewirkt es.
Wie es darunter im Detail abläuft, dass lernt man irgendwann dann schon nach und nach, mittels Learning by doing (oder wie das auch immer Richtig geschrieben wird), weil man nach und nach dann doch Ähnlichkeiten mit seinem eigene Code feststellt. Oder auch nicht, weil dies meiner Meinung nach nicht zwingend nötig ist.
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 »

Oder verwechsle ich da was? Kann man in dem Fall statt 'with ARect do' auch 'ARect.Left :=' machen, oder doch nicht?

Man kann es auf beide Arten machen, da beides richtig ist, ausser man ist algerisch auf with, was bei mir nicht der Fall ist.

Diese beiden Beispiele machen das selbe.

Code: Alles auswählen

  with ARect do begin
    Left := Left + dx;
    Right := Right + dx;
    Top := Top + dy;
    Bottom := Bottom + dy;
  end;


Code: Alles auswählen

    ARect.Left := ARect.Left + dx;
    ARect.Right := ARect.Right + dx;
    ARect.Top := ARect.Top + dy;
    ARect.Bottom := ARect.Bottom + dy;


Sowas kann man auch noch vereinfachen:

Code: Alles auswählen

    Left := Left + dx;
// neu
    Left += dx;
// oder
    Inc(Left, dx)
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

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

Beitrag von wp_xyz »

Mathias hat geschrieben:[...] ausser man ist algerisch auf with [...}

Und ich bin marokkanisch auf die C-Schreibweise in Pascal (ganz abgesehen davon, dass es bei Properties nicht geht, genausowenig wie Inc(Left, dx))
Mathias hat geschrieben:

Code: Alles auswählen

     Left += dx;
 

Sorry - das musste jetzt sein.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

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

Beitrag von mse »

@Erwin
Du musst lernen, den Sachen auf den Grund zu gehen. Anders geht es nicht, wie du ja erlebt hast. Darum wollte ich dir zeigen, was OffsetRect() macht und wie man sich die notwendigen Informationen zu Lazarus/Free Pascal beschafft. Fass dir ein Herz und überlege nochmals was
OffsetRect offsets the rectangle Rect by a horizontal distance DX and a vertical distance DY.

für TRect bedeutet. Da wird keine Grafik kopiert sondern lediglich die Position der Rechteckbeschreibung verschoben.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

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

Beitrag von mse »

Mathias hat geschrieben:Für was es ein Assigned für eine Record braucht ?

Das kommt vermutlich aus Windows wo ein NIL-Pointer abgefangen werden muss.
OffsetRect(rectpo^,...)

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 ich bin marokkanisch auf die C-Schreibweise in Pascal (ganz abgesehen davon, dass es bei Properties nicht geht, genausowenig wie Inc(Left, dx))

Stimmt, bei property geht dies leider nicht. C/C++ hat nicht nur schlechtes, es hat auch gutes, wen es auch nur sehr wenig ist.
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 »

mse hat geschrieben:@Erwin
Du musst lernen, den Sachen auf den Grund zu gehen. Anders geht es nicht, wie du ja erlebt hast. Darum wollte ich dir zeigen, was OffsetRect() macht und wie man sich die notwendigen Informationen zu Lazarus/Free Pascal beschafft. Fass dir ein Herz und überlege nochmals was

Jein. Im Idealfall fährt ein Auto. Wenn es mal verreckt, ist es natürlich vorteilhaft, wenn man auch gelernter Mechaniker ist.
Im Idealfall ist das, was die einzelnen Sachen machen, in sich Perfekt und Abgeschlossen und Stimmig.
Left := Abstand von Links der Elternkomponente.
Top von Oben,
Caption die Schrift auf der Komponente. Usw.
Im Idealfall funktioniert das, und man muss nicht wirklich wissen, was dahinter so abläuft.
Anders kann es natürlich aussehen, aber muss nicht, wenn was kompliziertes kommt.
Oder spätestens wenn mal was nicht geht.
So habe ich derzeit mein nächstes Problem:
Mein Panel ist das Eltern-Objekt für mehre kleine Images. Ich male auf diesem Panel.Canvas ein ausgefülltes Rechteck. Innerhalb des Rechteck sind meine kleinen Images, dessen Grafik erst rein kopiert werden/wurden. Aber überall dort, wo dann die Images sind, waren und hin versetzt werden, ist die Grafik, also das gezeichnete Rechteck, vom Panel.Canvas weg?
Wenn ich wüste, was da insgesamt vor sich geht, wüsste ich natürlich auch, was da schief läuft.
Aber würde dies mir weiterhelfen? Ich denke eher nicht. Viel mehr läuft so was meiner Erfahrung nach darauf hinaus, dass ich viel Zeit aufbringe, mich in die Materie weiter rein zu arbeiten, nur um festzustellen, da kann man nichts ändern. ?! Obwohl, mit FreePascal ist vieles möglich. Aber es würde vermutlich entweder sogar meine Fähigkeiten übersteigen, oder andere Programmiersprache zu erlernen ginge schneller. Dass ich so was wirklich echt in vernünftig zeitlichem Rahmen lösen könnte ... unwahrscheinlich.
Wenn auch hier dies so ist, und davon gehe ich auf Grund meiner Erfahrung davon aus, dann wäre mir eher damit geholfen, wenn man mir gleich sagen würde, nein, das geht nicht (anders). Oder dazu brauchst den Befehl X. Der Großteil der Befehle von X ist bekannt, aber dieser Z-Befehl, der geht so und muss so verwendet werden. Oder da muss man sich mit einem Weiteren Image unter den kleinen Images anfreunden, anstatt aus Sparsamkeitsgründen (Objekte einsparen) direkt auf dem Panel.Canvas zu zeichnen. Eben dergleichen Antworten.

Jetzt wo ich es schreibe, vergesst es, ich haue einfach ein weiteres Objekt in mein Programm und unter den kleinen Images. Und schau dann, ob dies zumindest klappt.
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 »

Obwohl, mit FreePascal ist vieles möglich. Aber es würde vermutlich entweder sogar meine Fähigkeiten übersteigen, oder andere Programmiersprache zu erlernen ginge schneller. Dass ich so was wirklich echt in vernünftig zeitlichem Rahmen lösen könnte ... unwahrscheinlich.
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.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten