Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bild (z.B Bitmap) selbst zeichnen (https://www.delphipraxis.net/74621-bild-z-b-bitmap-selbst-zeichnen.html)

Neutral General 6. Aug 2006 16:38


Bild (z.B Bitmap) selbst zeichnen
 
Hi,

Mein Frage ist ganze einfach: Ich lade ein Bild (z.B ein Bitmap ;)) in einen Stream. Wie male ich nun diese Bild?
Ich weiß das man das alles einfacher machen kann aber ich versuche gerade eine Unit zu schreiben um Tga Dateien zu öffnen und in Wikipedia sind die Dateitypen ja beschrieben nur dann kommt irgendwann ein Abschnitt "Bilddaten" und danach schon der Dateifuß usw.. Nur wie bekomme ich aus diesen Bilddaten jetzt ein Bild ?

Gruß
Neutral General

DGL-luke 6. Aug 2006 16:42

Re: Bild (z.B Bitmap) selbst zeichnen
 
naja, ein normales bildformat besteht z.B. aus bytes in der abfolge rgbrgbrgbrgbrgb.... das kannst du auslesen und zeichnen. zuvor aus dem header die auflösung und eben die bittiefe und die anordnung. Das musst du dann entsprechend umsetzen.

sniper_w 6. Aug 2006 16:45

Re: Bild (z.B Bitmap) selbst zeichnen
 
Zitat:

Wie male ich nun diese Bild?
Das Bild kann man unter Windows mit Windows API malen, wie sonst alles, oder mit hilfe OpenGL API oder DircetX.

Mehr möglichkeiten gibt es nicht.

Ursprungliche Datei -> Diese Datei laden und in ein API Freundlichesformat konvertieren -> API Funktionen aufrufen die für das Zeichen zuständig sind.

Der_Unwissende 6. Aug 2006 16:54

Re: Bild (z.B Bitmap) selbst zeichnen
 
Hi,
bei einem TGA handelt es sich um eine Rastergrafik. Was deine Unit letztlich am einfachsten realisieren kann ist der Umweg über ein Bitmap. Du liest die Daten in ihrer tga konformen Kodierung ein und erstellst daraus ein Bitmap, dass die Bildinformationen anzeigt. Das was du eigentlich zeichnest/anzeigst ist dann (sehr Windows üblich) ein Bitmap. Zudem hast du halt noch die Metadaten, die dir ein Tga bietet.

Gruß Der Unwissende

Neutral General 6. Aug 2006 16:56

Re: Bild (z.B Bitmap) selbst zeichnen
 
Zitat:

Zitat von sniper_w
Zitat:

Wie male ich nun diese Bild?
Das Bild kann man unter Windows mit Windows API malen, wie sonst alles, oder mit hilfe OpenGL API oder DircetX.

Mehr möglichkeiten gibt es nicht.

Ursprungliche Datei -> Diese Datei laden und in ein API Freundlichesformat konvertieren -> API Funktionen aufrufen die für das Zeichen zuständig sind.

Also entweder versteh ich dich nicht oder du mich nicht. Ich habe ungefähr das hier:

Delphi-Quellcode:
var S: TMemoryStream;
begin
  S:= TMemoryStream.Create;
  S.LoadFromFile('C:\z.B ein Bitmap.bmp');
 
  ...
   // Header auslesen etc
  ...
  // Bildaten
  // Wie lese ich jetzt die Bilddaten aus und zeichne sie z.B mit Canvas oder sonstirgendwie ?
  S.Free;
end;
In den Kommentaren steht schon etwa alles...

Gruß
Neutral General

Der_Unwissende 6. Aug 2006 18:17

Re: Bild (z.B Bitmap) selbst zeichnen
 
Du weißt doch wie man eine Bitmap anzeigt? Du kannst z.B. am einfachsten ein TImage verwenden. Dies kapselt alles, was du zur Anzeige in Windows brauchst.
Du hast eine TGA Datei, die kannst du einfach mit einem Filestream einlesen. Wie der Aufbau der Datei aussieht, findest du in der entsprechenden Spezifikation. Du kannst jetzt also eine Klasse TTga schreiben, die alles Funktionen und Eigenschaften die du unterstützen möchtest implementiert.
Beim Laden liest du dann die Datei (z.B. per Stream) ein und interpretierst hier die gelesenen Bytes. Du speicherst die Metainfos in deiner Klasse ab, legst eine Bitmap ab, dekodierst die Bytes, die die Pixel darstellen (geht alles aus der Spezifikation hervor) und schreibst diese in eine Bitmap.
Die kannst du wie gewohnt anzeigen.

Neutral General 7. Aug 2006 12:24

Re: Bild (z.B Bitmap) selbst zeichnen
 
Noch ne Frage: Also ich will ja das ich am Ende nur meine Unit einbinden muss und dann kann das TImage Tga Dateien laden.. Was muss ich dazu alles tun? Ich muss doch Von TGraphic ableiten oder?
Aber das ist sicher nicht alles ?!

Gruß
Neutral General

Neutral General 8. Aug 2006 14:21

Re: Bild (z.B Bitmap) selbst zeichnen
 
*push*

Ich will das ich mit nem Image Tga-Bilder laden kann wenn ich meine TGA-Unit eingebunden hab. Halt genauso wie TJPEGImage... Aber wie mach ich das denn? Das tolle ist nämlich das man nur ne jpeg.dcu hat und keine .pas und ich deshalb auch nix abgucken kann :|

Gruß
Neutral General

TeronG 8. Aug 2006 14:30

Re: Bild (z.B Bitmap) selbst zeichnen
 
Evtl. könntest du dir ja bei der 'GIFImage.pas' was abschauen :gruebel:
So wie ich das verstanden habe willste ja genau sowas machen.

(gibbet hier im forum öfter mal .. war auch bei "Bounce for Sakura" anbei)

Neutral General 8. Aug 2006 15:17

Re: Bild (z.B Bitmap) selbst zeichnen
 
Hab mir das mal angeschaut aber das Problem ist das ein Gif Bild aus mehreren Bildern bestehn kann und da alles noch komplizierter ist :|

Die Frage die ich mir schon die ganze Zeit stelle ist: Woher weiß das Image mit welcher Klasse es die Datei laden muss ?
Außerdem seh ich z.B beim Bitmap nirgendwo wo das eigentliche Bild geladen wird o.O
Also alles sehr komisch irgendwie :gruebel:

Gruß
Neutral General


Alle Zeitangaben in WEZ +1. Es ist jetzt 03: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