AGB  ·  Datenschutz  ·  Impressum  







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

DIB aus TBitmap erstellen?

Ein Thema von Nuclear-Ping · begonnen am 22. Jun 2007 · letzter Beitrag vom 22. Jun 2007
Antwort Antwort
Nuclear-Ping
(Gast)

n/a Beiträge
 
#1

DIB aus TBitmap erstellen?

  Alt 22. Jun 2007, 11:25
Hallo,

ich teste grad die Virtual Print Engine (VPE) von "IDEAL" Software und stoße hier schon auf die erste Hürde.

Scheinbar gibt es in der ganzen API nur eine Funktion, um Bilder NICHT aus einer Datei zu laden und die nennt sich "PictureDIB".
Code:
method long VPE.PictureDIB(long Left, long Top, long Right, long Bottom,
IntPtr [long] hDIB, PictureFlags [long] Flags)
Nach einer Suche in deren Forum bin ich auf diesen Beitrag gestoßen: http://idealsoftware.com/phpBB2/viewtopic.php?t=75

Dort meint der Support, dass es möglich ist, eine TBitmap zu drucken, wenn man sie in eine DIB umwandelt, die im "Global Memory" liegt. (Hä?)

Nach etwas rumgoogeln bin ich auch nicht schlauer geworden, ganz im Gegenteil. Ich bin auf http://www.codeguru.com/cpp/g-m/bitm...cle.php/c1693/ gestoßen, beim Lesen davon danke ich aber auch gleich ab. Ausserdem liegt die Bitmap nicht als Datei vor, sondern wird aus einer Datenbank eben in ein TBitmap geladen.

Dann habe ich noch das gefunden: http://delphi.pjh2.de/articles/graphic/bitmap.php
Zitat:
Um ein TBitmap in ein DIB zu verwandeln, kann TBitmap.SaveToStream benutzt werden.
... und dann? Das Handle des Streams als hDIB übergeben?

Bei dem ganzen frage ich mich auch, ob das wirklich so eine "IDEAL"e Methode ist, um Bilder an eine Druck-Engine zu übergeben, die über 400,- EUR kostet? Gehts bitte nicht noch komplizierter und zeitverschwenderischer ...? Würde die Demo nicht so gut aussehen und der Rest den es gibt mich auch nicht überzeugt, wäre das für mich schon ein Grund, diesem Produkt den Rücken zu kehren.

Hat jemand Erfahrungen mit der VPE und kann mir mit dem Bitmap->DIB Thema auf die Sprünge helfen?

Grüße,

Mario
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#2

Re: DIB aus TBitmap erstellen?

  Alt 22. Jun 2007, 11:32
Schlag mal in der Delphi-Hilfe TBitmap.HandleType nach.
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#3

Re: DIB aus TBitmap erstellen?

  Alt 22. Jun 2007, 11:53
Zitat:
type TBitmapHandleType = (bmDIB, bmDDB);
property HandleType: TBitmapHandleType;
Alles klar. Vielen Dank.

Hab damit noch nie gearbeitet und der Kommentar von dem "Supporter" da hat mich doch stark verwirrt: "I recommend you google for some source code examples."

Edit:
Hm, scheint nicht so einfach zu klappen.
Delphi-Quellcode:
  HsReport.OpenDoc;
  HsReport.AutoBreakMode := AUTO_BREAK_NO_LIMITS;

  tmpBmp := TBitmap.Create;
  tmpBmp.Assign (FClientData.Image);
  tmpBmp.HandleType := bmDIB;

  { // Klappt
  tmpBmp.SaveToFile ('tmp.bmp');
  HsReport.Picture(150, 150, VFREE, VFREE,
    'tmp.bmp', PIC_KEEPIMAGE + PIC_IN_FILE);
  }


  // Klappt nicht
  HsReport.PictureDIB (100, 100,
    VFREE,
    VFREE,
    tmpBmp.Handle,
    PIC_KEEPIMAGE + PIC_IN_FILE);

  HsReport.Preview;
Mit der Methode, das Bild erst auf die Platte zu speichern und dann zu laden, klappt es. Da zeigt er mir es auf der Vorschau an. Die zweite Methode jedoch funktioniert nicht. Da krieg ich nur ein leeres durchgekreuztes Quadrat, da wo das Bild sein sollte.

Edit 2:
Nach weiterem rumlesen in dem Forum scheint die Methode, die Dateien von der Platte zu laden die bessere Methode zu sein.

http://idealsoftware.com/phpBB2/viewtopic.php?t=236
Zitat:
We do not recommend to use this function, because it must hold the image always in memory. If you are using the standard Picture() method, which reads a file from disk, it can cache the image, which means it will be removed from memory if it is not displayed / printed for a longer period of time, and it will be reloaded as necessary.
Von daher hat sich das DIB-Thema für mich erledigt.
  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 18:43 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