GetDIBSizes?

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
ChrisTG
Beiträge: 13
Registriert: Mi 2. Mai 2012, 09:48

GetDIBSizes?

Beitrag von ChrisTG »

Hallo,

ich versuche einen alten Deplhi-Quellcode mit Lazarus zu bearbeiten. Leider scheitere ich momentan daran, dass die Funktion "GetDIBSizes" nicht bekannt ist.
In welcher Unit finde ich sie?
Vielen Dank!

Gruß,
Chris

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: GetDIBSizes?

Beitrag von Antrepolit »

Das klingt ja, als würdest du von Hand zufuß and irgendwelchen Bitmap-Routinen rumschrauben. Sicher, dass Lazarus nicht schon alles dafür dabei hat?
Grüße, Antrepolit

care only if your os is really burning

gocher
Beiträge: 298
Registriert: Di 23. Nov 2010, 23:41
OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
CPU-Target: 32Bit/64Bit
Wohnort: Geldern
Kontaktdaten:

Re: GetDIBSizes?

Beitrag von gocher »

Bei Delphi befindet sich die procedure

Code: Alles auswählen

procedure GetDIBSizes(Bitmap: HBITMAP; var InfoHeaderSize: DWORD; var ImageSize: DWORD);
in vcl\Graphics.pas, Lazarus nimmt bei Grafikbearbeitung einen anderen Weg, denn sie soll ja nicht nur unter Windows laufen!
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me

ChrisTG
Beiträge: 13
Registriert: Mi 2. Mai 2012, 09:48

Re: GetDIBSizes?

Beitrag von ChrisTG »

Hallo,

okay, also kann ich Euren Antworten entnehmen, dass es keine vergleichbare Funktion in Lazarus gibt?
Sicher, dass Lazarus nicht schon alles dafür dabei hat?

Nein, woher soll ich das wissen?

Gruß,
Chris

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: GetDIBSizes?

Beitrag von MAC »

Was willst du denn erreichen, was ist dein Ziel ?
Ich denke dann können wir eher eine Alternative anbieten..

Code: Alles auswählen

Signatur := nil;

ChrisTG
Beiträge: 13
Registriert: Mi 2. Mai 2012, 09:48

Re: GetDIBSizes?

Beitrag von ChrisTG »

Hallo,

so wie ich das sehe, wird die Funktion nur benutzt um den Speicherbedarf für Header und Graphics zu ermitteln. Direkt danach wird im Code mittels Memory() der Speicher reserviert.
Im Endeffekt ist das GetDIBSizes teil einer Druckroutine, mittels der eine Bitmap auf einem Printer ausgegeben werden kann.
Vielleicht gibt es dafür ja schon (halb-)fertige Lösungen in der LCL?

Gruß,
Chris

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Re: GetDIBSizes?

Beitrag von Antrepolit »

ChrisTG hat geschrieben:Im Endeffekt ist das GetDIBSizes teil einer Druckroutine, mittels der eine Bitmap auf einem Printer ausgegeben werden kann.
Vielleicht gibt es dafür ja schon (halb-)fertige Lösungen in der LCL?


Natürlich gibt es da was fertiges. Ein Drucker verwendet ein Canvas. Du Zeichnest deine Grafik mit Bild.Draw(Canvas, x, y) einfach auf das Canvas des Druckers. An dieser Stelle solltest du dich mit dem Canvas-Konzept auseinandersetzen, denn ich denke, dass du davon noch nie etwas gehört hast - sonst wäre deine ursprüngliche Frage gar nicht erst aufgekommen. :wink:
Grüße, Antrepolit

care only if your os is really burning

ChrisTG
Beiträge: 13
Registriert: Mi 2. Mai 2012, 09:48

Re: GetDIBSizes?

Beitrag von ChrisTG »

Hallo,

gehört habe ich davon, sagen wir mal besser ich habe mit allgemein noch nicht großartig mit Grafikprogrammierung auseinandergesetzt.
Es ging mir in dem Fall auch primär darum, den alten Delphi-Quelltext partiell weiter nutzen zu können.
Die Grafik zeichnen kann ich leider nicht, denn sie liegt als Datei vor.

Gruß,
Chris

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: GetDIBSizes?

Beitrag von Socke »

ChrisTG hat geschrieben:Die Grafik zeichnen kann ich leider nicht, denn sie liegt als Datei vor.

Denk dir eine bessere Ausrede aus ;-) Eine Datei kannst du natürlich auch in dein Programm laden:

Code: Alles auswählen

var
  b: TBitmap;
begin
  b := TBitmap.Create;
  b.LoadFromFile('myfile.bmp');
  b.Free;
end;
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

ChrisTG
Beiträge: 13
Registriert: Mi 2. Mai 2012, 09:48

Re: GetDIBSizes?

Beitrag von ChrisTG »

So einfach geht das? :)
Prima, dann werd ich mich mal mit dem Thema Canvas auseinandersetzen.
Vielen Dank nochmal an alle hier!

Gruß,
Chris

Antworten