AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Nicht sichtbaren TPaintBox Inhalt speichern

Ein Thema von cramer · begonnen am 10. Feb 2015 · letzter Beitrag vom 11. Feb 2015
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Nicht sichtbaren TPaintBox Inhalt speichern

  Alt 10. Feb 2015, 15:08
Und was soll dir dieses Exception-Handling bringen?

Das sollte dich glücklich(er) machen:
Delphi-Quellcode:
procedure QRCodeSave( aFileName : string; aImage : Timage );
var xBitmap : Graphics.TBitmap;
Begin
  if not fileDirOk( aFileName ) then
    raise Exception.CreateFmt( '"%s" ist ungültig', [aFileName] );
  if not Assigned( aImage ) then
    raise EArgumentNilException.Create( 'aImage' );

  xBitmap := Graphics.TBitmap.Create;
  try
    xBitmap.Height := aImage.Height;
    xBitmap.Width := aImage.Width;
    xBitmap.Canvas.Draw( 0, 0, aImage.Picture.Graphic);
    xBitmap.SaveToFile( aFileName );
  finally
     xBitmap.Free;
  end;
end;
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
Benutzerbild von DeddyH
DeddyH

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

AW: Nicht sichtbaren TPaintBox Inhalt speichern

  Alt 10. Feb 2015, 15:13
BTW: wäre es so nicht einfacher?
Delphi-Quellcode:
xBitmap := Graphics.TBitmap.Create;
  try
    xBitmap.Assign(aImage.Picture.Graphic);
    xBitmap.SaveToFile( aFileName );
  finally
     xBitmap.Free;
  end;
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
 
#3

AW: Nicht sichtbaren TPaintBox Inhalt speichern

  Alt 10. Feb 2015, 15:17
Ja, aber was soll ich denn noch alles machen?

(Was schreibe ich denn für heute in mein Berichtsheft? )
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
Benutzerbild von cramer
cramer

Registriert seit: 23. Jun 2004
Ort: Velbert (NRW)
108 Beiträge
 
Delphi 2006 Enterprise
 
#4

AW: Nicht sichtbaren TPaintBox Inhalt speichern

  Alt 10. Feb 2015, 16:16
Vielen Dank ihr Beiden.

Wo ist denn die Zeile
xBitmap := TBitmap.Create;
Gute Frage
Jetzt funktionieren beide Versionen, die "Glücklich Machende" und die "BTW" auch.

Zur Frage "Und was soll dir dieses Exception-Handling bringen?"

"FileDirOK()" prüft den Pfad und legt ihn ggf an.
Wenn das schon nicht geht, liefert QRCodeSave "false" zurück und die übergeordneten Abläufe werten das aus.

FehlerOK() speichert einen Eintrag ins Fehlerlog und prüft, ob das Programm im "AutoMode" läuft.
Falls nicht, gibts auch noch einen Fehler-Dialog für den Anwender.
Erfahrung ist etwas, daß man erst bekommt, kurz nachdem man es dringend gebraucht hätte.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.385 Beiträge
 
Delphi 12 Athens
 
#5

AW: Nicht sichtbaren TPaintBox Inhalt speichern

  Alt 10. Feb 2015, 16:20
Und was mir grade noch aufgefallen war:

Du willst also unsichtbar im Hintergrund ein Bild malen, wolltest dafür aber eine "sichtbare" Komponente auf der Form benutzen.

Also in dem Fall nimmt man natürlich eine unsichtbare "Komponente", welche man nicht auf das Form liegen hat.
-> TBitmap erstellen, drauf malen, speichern und Bitmap wieder freigeben

Aber da man den QR-Code eventuell auch mal anzeigen möchte, trennt man den Zeichen-Code komplett von irgendeiner Componente.
-> Zeichenfunktion bekommt ein TCanvas, dann noch eine X- und Y-Position und vielleicht noch die Größe Width/Height.
Dann ist es auch egal, ob man auf ein Bitmap, Jpeg, PNG oder ein TImage.Bitmap zeichnet.

-> TBitmap erstellen, die Funktion drauf malen lassen, speichern und Bitmap wieder freigeben
oder
-> TImage auf die Form und dann nur noch die Zeichenfunktion auf Image1.Picture.Bitmap.Canvas zeichnen lassen
(vorher natürlich noch die Größe der Bitmaps setzen, falls die Größe nicht bereits gesetzt ist)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von cramer
cramer

Registriert seit: 23. Jun 2004
Ort: Velbert (NRW)
108 Beiträge
 
Delphi 2006 Enterprise
 
#6

AW: Nicht sichtbaren TPaintBox Inhalt speichern

  Alt 10. Feb 2015, 16:31
Danke für die Zusatzinfos.
Erfahrung ist etwas, daß man erst bekommt, kurz nachdem man es dringend gebraucht hätte.
  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
 
#7

AW: Nicht sichtbaren TPaintBox Inhalt speichern

  Alt 10. Feb 2015, 16:40
Ja, während du schreibst
Delphi-Quellcode:
if not QRsave( ... ) then
begin
  ShowMessage( 'Irgendwas ging da nicht' );
  Exit;
end;
if not FooMe( ... ) then
begin
  ShowMessage( ... );
  exit;
end;
schreibe ich einfach
Delphi-Quellcode:
QRsave( ... );
FooMe( ... );
habe das gleiche Verhalten und kann bei einem Fehler sehr exakt sagen, was genau in die Hose gegangen ist:
  • Der Dateiname ist ungültig
  • Die Instanz aImage ist nil
  • Das Speichern des Bitmaps ist aus dem Grund "..." fehlgeschlagen
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)

Geändert von Sir Rufo (10. Feb 2015 um 16:46 Uhr)
  Mit Zitat antworten Zitat
pelzig
(Gast)

n/a Beiträge
 
#8

AW: Nicht sichtbaren TPaintBox Inhalt speichern

  Alt 10. Feb 2015, 17:16
Antwort eines Pfuschers:

Bei vielen VCL-Elementen kann man Visible auf false setzen ODER Left auf minus Soundsoviel minus Komponentenbreite

Tand ist das Gebuild aus Menschenhand

Man möge mich in der DP bitte nicht deswegen lynchen!

Mogeln gehört zum Handwerk...

MfG
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 09:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz