AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Gibt es eine Image.picture.bitmap?
Thema durchsuchen
Ansicht
Themen-Optionen

Gibt es eine Image.picture.bitmap?

Ein Thema von Mattze · begonnen am 31. Jan 2009 · letzter Beitrag vom 31. Jan 2009
Antwort Antwort
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#1

Gibt es eine Image.picture.bitmap?

  Alt 31. Jan 2009, 15:22
Hallo,

wenn ich (mit GraphicEx) verschiedene Bilder in Image.picture.graphic lade, gibt es auch für verschiedene Formate ein Image.picture.bitmap. Für einige Formate aber nicht (z. B. jpg, zumindestens, wenn es nicht per GraphicEx geladen wird.)
Wie bekomme ich nun heraus, ob es eine Bitmap dazu gibt oder nicht?
Assigned(Image.picture.bitmap) macht es nicht.
Image.picture.bitmap.handle<>0 macht es (!), aber nach dieser (nur) Abfrage funktioniert das Image selber nicht mehr! (Z. B. Image.refresh)

Wie geht es?

Gruß
Mattze
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Gibt es eine Image.picture.bitmap?

  Alt 31. Jan 2009, 15:25
Meinst Du Image.Picture.Graphic.Empty?
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
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#3

Re: Gibt es eine Image.picture.bitmap?

  Alt 31. Jan 2009, 16:30
Nee,

ich glaube nicht!
Noch mal am konkreten Beispiel zum Problem:
Ich lade eine png-Graphic per GraphicEx in Image1.picture.graphic.
Diese Graphic hat (komischerweise) eine Bitmap-Entsprechung in
Image1.picture.bitmap. (Z. B. kann man da ohne Probleme Image2.picture.assign(image1.picture.bitmap) machen!
Ich lade jpg (ohne GraphicEx). Da gibt es keine Bitmap-Entsprechung (Image1.picture.bitmap.handle=0).

Wie kriege ich im geladenen Image1 raus, ob es nun eine Bitmap hat oder nicht?

Sobald ich Image1.picture.bitmap (.handle<>0) abfrage, ist Image1 nicht mehr
"bedienbar". Z. B. geht dann kein image1.refresh mehr!

Gruß
Mattze
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Gibt es eine Image.picture.bitmap?

  Alt 31. Jan 2009, 16:32
Hi,

Ich denke mal das kannst du rausbekommen mit

Image.Picture.Graphic.Classname oder auch ClassType. Je nachdem wies dir besser passt
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.095 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

Re: Gibt es eine Image.picture.bitmap?

  Alt 31. Jan 2009, 16:37
Hi,

 if Image.Picture.Graphic is TBitmap then ... Das Phänomen kommt daher, dass GraphicEx seine Bildklassen alle von TBitmap abgeleitet hat (bzw. von ein Nachfahre von TBitmap dient als Basisklasse bei GraphicEx).

TPicture.Bitmap ist nur "belegt", wenn es sich bei Graphic um eine TBitmap handelt.

ClassName würde den Namen des Nachfahren liefern...

Mfg
FAlter
Felix Alter
Japanurlaub 2015
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Gibt es eine Image.picture.bitmap?

  Alt 31. Jan 2009, 16:37
Ginge das nicht auch einfach mit dem is-Operator?
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
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#7

Re: Gibt es eine Image.picture.bitmap?

  Alt 31. Jan 2009, 17:00
Danke,

mag ja alles stimmen, aber nun verstehe ich rein gar nichts mehr!
Vergesst mal bitte GraphicEx.
Formular mit 2 Image, 3 Button und ein OpenPictureDialog (OPD).
(Das Label ist nur so, damit ich weiß, was ich ausgewählt habe.)
Die Click-Events.
Das ganze bitte mit JPG probieren, wenn Ihr wollt.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if OPD.Execute then begin
    label1.caption:=OPD.FileName;
    image1.Picture.LoadFromFile(opd.filename);
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
    if not image1.Picture.Bitmap.empty then begin
      image2.Picture.Bitmap.Assign(image1.Picture.bitmap)
    end else begin
      showmessage('Bitmap leer');
    end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  showmessage('Test');
end;
Mit Button1 wird das jpg-Bild nach Image1 geladen.
Button2 testet, ob eine Bitmap da ist und lädt diese in image2. (Quatsch, da es bei JPGs ja keine gibt. Habe ich nur vergessen, rauszunehmen.)
Falls es keine gibt (also bei JPG) wird eine Message angezeigt, die etwas von Image1 verdeckt. (Wichtig!)
Wird diese message "weggeclickt", wird Image1 nicht aktualisiert, refreshed, invalidated... Es bleibt ein grauer (Hintergrund-)kasten.
Nehme ich statt dessen Button3, wird auch nur eine Message angezeigt, die Image1 genauso überdeckt.
Wird die weggeclickt, wird Image1 ordentlich "aktualisiert", wie es sich gehört.

Was mache ich falsch?

Gruß
Matthias
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#8

Re: Gibt es eine Image.picture.bitmap?

  Alt 31. Jan 2009, 19:38
Hallo,

ich habe natürlich weitergespielt.
Und so geht es:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var pic: TPicture;
begin
  pic:=TPicture.Create;
  try
    pic.Assign(image1.picture);
    if not pic.bitmap.empty then begin
      image2.Picture.Bitmap.Assign(image1.Picture.bitmap)
    end else begin
      showmessage('Bitmap leer');
    end;
  finally
    pic.Free
  end;
end;
Finde ich aber trotzdem unbefriedigend. Vor allen Dingen ärgert mich, dass ich nicht weiß, warum es andersch (sprich: direkt) nicht geht.

Gruß
Mattze
  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 08:33 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