AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Für CopyRect passendes Ereignis?
Thema durchsuchen
Ansicht
Themen-Optionen

Für CopyRect passendes Ereignis?

Ein Thema von OrNEC · begonnen am 24. Jan 2016 · letzter Beitrag vom 27. Jan 2016
Antwort Antwort
Seite 2 von 3     12 3      
OrNEC

Registriert seit: 6. Nov 2009
493 Beiträge
 
FreePascal / Lazarus
 
#11

AW: Für CopyRect passendes Ereignis?

  Alt 25. Jan 2016, 14:37
Was bringt dich zu der Annahme, daß das Bild erst nach OnShow aus der Ressourcendatei in das TImage geladen wird?
Weil das Bild anscheinend in der OnShow noch nicht zur Verfügung steht.
  Mit Zitat antworten Zitat
OrNEC

Registriert seit: 6. Nov 2009
493 Beiträge
 
FreePascal / Lazarus
 
#12

AW: Für CopyRect passendes Ereignis?

  Alt 25. Jan 2016, 14:41
Der sauberste Weg wäre es in dem Fall doch, das Bitmap nicht über den Form-Designer zu laden, sondern es selbst in eine Ressource zu packen. Dann hat man den Ladezeitpunkt definitiv in der Hand, kann das im OnCreate erledigen, und direkt danach gut leserlich und nachvollziehbar die Kopie machen.
Klappt auch nicht. Mit dem Klick auf den Button schon...
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
var
  Quelle, Ziel: TRect;
begin
  Image1.Picture.LoadFromLazarusResource('bg');
  Image2.Picture.LoadFromLazarusResource('5ge');

  Quelle := Rect(0, 0, 100, 100);
  Ziel := Rect(0, 0, 100, 100);
  Image2.Canvas.CopyRect(Ziel, Image1.Canvas, Quelle);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  Quelle, Ziel: TRect;
begin
  Quelle := Rect(0, 0, 100, 100);
  Ziel := Rect(0, 0, 100, 100);
  Image2.Canvas.CopyRect(Ziel, Image1.Canvas, Quelle);
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#13

AW: Für CopyRect passendes Ereignis?

  Alt 25. Jan 2016, 14:45
Was passiert denn, wenn Du auf den Button klickst und anschließend mal ein anderes Fenster über Deins legst?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#14

AW: Für CopyRect passendes Ereignis?

  Alt 25. Jan 2016, 14:51
Was bringt dich zu der Annahme, daß das Bild erst nach OnShow aus der Ressourcendatei in das TImage geladen wird?
Weil das Bild anscheinend in der OnShow noch nicht zur Verfügung steht.
Das eine hat mit dem anderen nicht zwangsläufig etwas zu tun und egal ist es sowieso.
  • Erst wird die Form sichbar gesetzt
  • dann kommt die Benachrichtigung OnShow
  • dann wird gezeichnet
Da du auf das Gezeichnete zugreifen möchtest ist es also unerheblich ob das Image die Grafik schon geladen hat oder nicht. Die Grafik ist auf jeden Fall noch nicht gezeichnet, denn das erfolgt erst nach OnShow .
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
OrNEC

Registriert seit: 6. Nov 2009
493 Beiträge
 
FreePascal / Lazarus
 
#15

AW: Für CopyRect passendes Ereignis?

  Alt 25. Jan 2016, 14:53
Was passiert denn, wenn Du auf den Button klickst und anschließend mal ein anderes Fenster über Deins legst?
Passiert nichts, das andere Fenster hat keinen Einfluss auf mein Fenster.
  Mit Zitat antworten Zitat
OrNEC

Registriert seit: 6. Nov 2009
493 Beiträge
 
FreePascal / Lazarus
 
#16

AW: Für CopyRect passendes Ereignis?

  Alt 25. Jan 2016, 14:56
Die Grafik ist auf jeden Fall noch nicht gezeichnet, denn das erfolgt erst nach OnShow .
Das war auch meine Vermutung... dann muss ich wohl mit Timer arbeiten, oder gibt da doch eine Lösung?

Geändert von OrNEC (25. Jan 2016 um 15:29 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#17

AW: Für CopyRect passendes Ereignis?

  Alt 25. Jan 2016, 17:27
Im oder nach OnPaint?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
OrNEC

Registriert seit: 6. Nov 2009
493 Beiträge
 
FreePascal / Lazarus
 
#18

AW: Für CopyRect passendes Ereignis?

  Alt 25. Jan 2016, 17:29
Im oder nach OnPaint?
Im OnPaint hängt sich das Programm auf. Und was meinst mit nach OnPaint?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#19

AW: Für CopyRect passendes Ereignis?

  Alt 25. Jan 2016, 18:49
Guck mal hier http://www.delphigroups.info/2/71/97729.html letzter Beitrag.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#20

AW: Für CopyRect passendes Ereignis?

  Alt 25. Jan 2016, 19:00
Oben hatte SirRufo doch einen Hinweis auf OnIdle geliefert:

Die VCL-Form ist gesichert komplett gezeichnet beim ersten Application.OnIdle Event nach dem Form.OnShow Event.

Ist dieser Hinweis denn nicht brauchbar? Könnte man denn nicht einfach in der OnIdle-Ereignisbehandlung eine globale Boolean-Variable, die als Schalter fungiert, abfragen, so daß die Anweisungen nur dieses eine Mal ausgeführt werden? Z.B. so:
Delphi-Quellcode:
...
  private
    Var
      FirstIdlePassed : Boolean;
  public
    procedure MyOnIdleHandler(Sender: TObject; var Done: Boolean);
  end;

procedure TForm1.MyOnIdleHandler(Sender: TObject; var Done: Boolean);
begin
  Done := False;
  If FirstIdlePassed Then Exit;

  FirstIdlePassed := True;
  ShowMessage('Das erste OnIdle-Event!');
  ...
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FirstIdlePassed := False;
  Application.OnIdle := MyOnIdleHandler;
end;
Nachtrag:
Ob das dann auch in Lazarus funktioniert, muß man gegebenenfalls ausprobieren ... Ach ja, bei Lazarus muß man das @ davor setzen:
Application.OnIdle := @MyOnIdleHandler;

Geändert von Perlsau (26. Jan 2016 um 06:36 Uhr) Grund: Nachtrag
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz