TBitmap::HandleType
-
Hallo,
Was genau funktioniert denn nicht. Zur Umwandlung von dib nach ddb sieh mal in die Hilfe zu:
*
CreateDIBitmap
The CreateDIBitmap function creates a device-dependent bitmap (DDB) from a device-independent bitmap (DIB) and, optionally, sets the bitmap bits.HBITMAP CreateDIBitmap(
HDC hdc, // handle to device context
CONST BITMAPINFOHEADER *lpbmih, // pointer to bitmap size and
// format data
DWORD fdwInit, // initialization flag
CONST VOID *lpbInit, // pointer to initialization data
CONST BITMAPINFO *lpbmi, // pointer to bitmap color-format data
UINT fuUsage // color-data usage
);
*Ciao
[ Dieser Beitrag wurde am 19.05.2003 um 14:54 Uhr von Braunstein editiert. ]
-
Die Umwandlung ist kein Problem. Den Code hatte ich im Beitrag darüber noch mal gepostet. Aber ich bekomm die Rückverwandlung nicht hin. Wir hatten ja zu mehreren ergebnislos geknobelt. Bin inzwischen auch nicht weitergekommen.
-
und was passiert, wenn du ein neues dib Bitmap erzeugst und dann dein altes reinkopierst. Das müsste doch gehen, oder ?
-
Dann ist die Zwischenablage damit zufrieden. Andere Anwendungen können auch auf das Format zurückgreifen.
Functionen wie Bild heller, dunkler, Graustufen werden aber nicht mehr bildwirksam ausgeführt. Also scheinen doch Informationen übergeben zu werden.
Wie es bis jetzt aussieht, komm ich um die Rückverwandlung in DIB nicht drumrum.
-
*lila*, mein letzter Versuch, dann muß der Thread wieder Schlafen gehen, bis zufällig irgendjemand irgendwann wieder die Lampe reibt.

Bei so vielen erfahrenen Programmierern in der Runde + die total optimierte und bombastisch starke Hilfe im BCB6 :p sollte rein theoretisch doch jemand in der lage sein,
DDB wieder in DIB
zurückzuverwandeln?
Das dürften nur ganz wenige Codezeilen sein. Aber wie es nun mal des Lernteufels brauch ist, genau diese Syntax bekomm ich nicht zusammen. Wer kann, wer mag Idee oder Hilfe stiften? Laßt die Mühen des gepeinigten Fragers und vor allem die Mühen der unermüdlichen Helpers nicht umsonst gewesen sein.

-
Hallo mal wieder,
Du müsstest dich mal in der MSDN umschauen. Da findest du bestimmt etwas. Vielleicht hilft dir CreateDIBSection weiter. Ich habs jetzt allerdings nicht ausprobiert.
Ciao
-
Ich hab jetzt hier nicht alles gelesen/verfolgt, aber warum legst Du nicht 2 Kopien Deines Bitmaps an, eines DDB und eines DIB. Dann brauchste nix zurückverwandeln, höchsten zurück kopieren

-
CreateDIBSection hat mich nicht weitergebracht, @Braunstein. Leider, nur die DIB-Seite, keine Umwandlung.
@Peter, das dürfte nicht möglich sein oder gar nichts bringen. Ich verwende das DDB wegen des flotten Handlings mit dem TImage. Anzeige hoher Vergrößerungen, flottes Malen, flottes Scrollen. Wenn ich zB. die DIB-Referenz unter dem TImage mit dem DDB-Handle mitlaufen laß, muß ich beide synchron schalten. Also wartet mein schnelles Arbeits-Image ständig auf das viel langsamere DIB-Image. Alle Berechnungen und Bewgungen müssen darin ja aktuell durchgeführt werden.
Total scheitern tut das ganze dann am Zoomfaktor. Die Arbeitsvergrößerung von 1000% kann bei DIB allenfalls für sehr kleine Bilder erreicht werden. Größere Bilder werden schon ab 300 oder 400% nicht mehr angezeigt. Bei DDB kann ich problemlos 10 MB "schwere" Bilder auf 1000% bringen und flott darin arbeiten.
Leider, so gut es gemeint ist, keine Chance. Ich brauch wirklich die Umwandlung, oder ich muß mit faulen Tricks (sinnlose Functionsaufrufe) arbeiten, um einige Functionen der App überhaupt nutzen zu können.
Freaks der bildenden Künste, nur testhalber mal ein
Image->Picture->Bitmap->HandleType = bmDDB;,
und ihr erlebt ein völlig neues Arbeitsgefühl. Wer DDB kennt, will es sicher nicht mehr missen. Die Knobelkur, es wieder zurückwandeln zu können, sollte sich jederzeit lohnen können. Wer macht mit?
-
Hallo Zusammen,
Ich will auf einem Image die Ihre Picture aus dem Clipboard() (als Metafile) bekommt zeichnen, dies geht leider nicht weil BCB will ein Bitmap-Format haben, ist es möglich diesen Metafile-Format (direkt aus dem Clipboard() oder in den Image) in einem Bitmap zu wandeln? ich habe vergeblich den ganzen Tag heute versucht, aber ohne Erfolg.
Gruß
C++:Hoby
-
Hallo,
Du kannst natürlich auch ein Metafile in ein Bitmap wandeln aber es wäre doch sicher einfacher mit TCanvas::Draw() das Metafile direkt zu zeichnen.
Ciao
-
hallo,
genau das habe ich gemacht, durch Zufall, hab einen Beispiel gefunden, ich wusste es nicht, ich habe gedacht man muss immer Bitmap haben.
Aber es würde mich intressieren wie man Metafile zu Bitmap umwandeln kann?
ich habe nur einen Beispiel wie man png zu Bitmap umwandelt und umgekehrt.
danke
C++_Hoby