AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Welche Grafikart befindet sich TPicture Variable?
Thema durchsuchen
Ansicht
Themen-Optionen

Welche Grafikart befindet sich TPicture Variable?

Ein Thema von Merowinger · begonnen am 3. Apr 2006 · letzter Beitrag vom 6. Apr 2006
Antwort Antwort
Merowinger

Registriert seit: 7. Jul 2005
13 Beiträge
 
Delphi 7 Enterprise
 
#1

Welche Grafikart befindet sich TPicture Variable?

  Alt 3. Apr 2006, 20:55
Hey DPler,

ich möchte herausfinden was für eine Grafik in der Variable Bild ist

(GIF,JPEG,WMF,BMP,PNG). Eine Möglichkeit ist über den Suffix von Opendialog.Filename

zu gehen. Gibt es noch eine andere Möglichkeit?

Mein Quelltext:

Delphi-Quellcode:

procedure TMainForm.BImageOpenClick(Sender: TObject);
var Bild : TPicture;

begin
     if OpenPictureDialog.Execute then begin
        Bild := TPicture.Create;
        Bild.LoadFromFile(OpenPictureDialog.FileName);
        //Hier die Prüfung
        Bild.Free;
     end;
end;
Danke Merowinger
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: Welche Grafikart befindet sich TPicture Variable?

  Alt 3. Apr 2006, 21:04
Einfach die Endung des Dateinamen prüfen.

Delphi-Referenz durchsuchenExtractFileExt
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Merowinger

Registriert seit: 7. Jul 2005
13 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Welche Grafikart befindet sich TPicture Variable?

  Alt 4. Apr 2006, 18:16
Danke für die Antwort. Ich dachte es gibt vielleicht noch eine andere Variante die das Problem etwas eleganter löst.

Danke Merowinger
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#4

Re: Welche Grafikart befindet sich TPicture Variable?

  Alt 4. Apr 2006, 23:36
Nein. der Typ der Grafik wird nicht in TPicture gespeichert, da die Grafiken intern als Bitmap behandelt werden.

Man könnte sich aber einen eigenen Typ von TPicture ableiten und dort solch eine Option einbauen.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Welche Grafikart befindet sich TPicture Variable?

  Alt 5. Apr 2006, 06:49
Der Typ wird indirekt schon im TPicture gespeichert. Und war sind alle Bilder-Klassen von TGraphic abgeleitet. Wenn man also mit TPicture ein Bild läd, so wird dynamich die benötigte Klasse erzeugt (class of TGraphic). Das Property Graphic ist also der Klassentyp des Bildes. Wenn du also ein JPEG in ein TPicture lädst so müsste das Graphic-Property vom Typ TJPEGImage sein etc.

@turboPASCAL: Das die Grafik intern als TBitmap gehandelt wird ist falsch. Wenn du mal ein JPEG in ein TPicture lädst und versuchst auf Picture.Bitmap zu zugreifen sollte dir eine AV erscheinen. Wenn TPicture alles als Bitmap handeln würde so wären alphatransparenz im TImage gar nicht möglich was aber eindeutig geht (siehe PNG)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#6

Re: Welche Grafikart befindet sich TPicture Variable?

  Alt 5. Apr 2006, 16:53
Zitat von SirThornberry:
Der Typ wird indirekt schon im TPicture gespeichert. Und war sind alle Bilder-Klassen von TGraphic abgeleitet. Wenn man also mit TPicture ein Bild läd, so wird dynamich die benötigte Klasse erzeugt (class of TGraphic). Das Property Graphic ist also der Klassentyp des Bildes. Wenn du also ein JPEG in ein TPicture lädst so müsste das Graphic-Property vom Typ TJPEGImage sein etc.
Ja, es währe aber schöner wenn man zB. TGA, TIF, JPG usw. in ein Image läd dann auch einfach auf die Ext. bzw den Typ abfragen kann. Hier im Forum gibts ja schon irgend wo wine Kompo. wo der Dateiname des geledenen Bildes mit gespeichert wird. (So hatte ich die Frage verstanden)

Zitat von SirThornberry:
@turboPASCAL: Das die Grafik intern als TBitmap gehandelt wird ist falsch. Wenn du mal ein JPEG in ein TPicture lädst und versuchst auf Picture.Bitmap zu zugreifen sollte dir eine AV erscheinen. Wenn TPicture alles als Bitmap handeln würde so wären alphatransparenz im TImage gar nicht möglich was aber eindeutig geht (siehe PNG)
Die Nutzung der geledenen Grafik also das geladene Bild/Picture, egal ob JPG oder PNG wird in Windows als Bitmap verwaltet. Das Bild in TGrafic ist auch nur ein Bitmap. Das man das nicht in TPicture.Bitmap nicht findet ist klar, es wurde ja nicht in diese Propdings ( ). geladen. Das macht das Bearbeiten / Laden / Speichern einfacher.

Du kannst ja eine TGrafik ja auch mit BitBlt auf einen DC kopieren.

Oder irre ich mich in dieser Sache?

...kann mir das leider nicht genauer anschauen, da fehlen mir ein paar Sources.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: Welche Grafikart befindet sich TPicture Variable?

  Alt 6. Apr 2006, 07:54
Zitat von turboPASCAL:
Oder irre ich mich in dieser Sache?

...kann mir das leider nicht genauer anschauen, da fehlen mir ein paar Sources.
Ja, tust du. Von TGraphic (der abstrakten Basisklasse) stammen z.B. TBitmap, TMetafile, TIcon ab. TPicture speichert nur einen Verweis darauf. Hier übrigens die Kommentare zu den Eigenschaften aus Grahpics.pas:
Delphi-Quellcode:
{
      Graphic - The TGraphic object contained by the TPicture
      Bitmap - Returns a bitmap.  If the contents is not already a bitmap, the
        contents are thrown away and a blank bitmap is returned.
      Icon - Returns an icon.  If the contents is not already an icon, the
        contents are thrown away and a blank icon is returned.
      Metafile - Returns a metafile.  If the contents is not already a metafile,
        the contents are thrown away and a blank metafile is returned. }
Wenn du also ein Metafile reingeladen hattest und dann die Eigenschaft Bitmap benutzt, dann wird der ursprüngliche Inhalt verworfen.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  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 23:36 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