PNG laden
-
Guten Morgen zusammen,
ich bin gerade dabei mich ein bisschen in WIN32 GUI Entwicklung einzuarbeiten und bin gerade etwas ratlos. Ich habe mir eben Spotify angesehen und die haben oben rechts, wie normale Anwendungen auch, drei Buttons zum minimieren, maximieren und schließen. Allerdings sind das bei denen keine echten Buttons sondern Bildchen die aus dem Zip Archiv "C:\Users\user\AppData\Roaming\Spotify\Data\resources.zip" kommen. Es ist eigentlich nur ein png und heißt "window-controls-win.png".
Ich würde sowas gerne nachbauen aber weiß nicht so genau wie.Wie also lesen die das Bild ein(scheint ja keine Ressource zu sein), wie wählen die das richtige aus(es sind ja genau genommen 15 Bildchen in einem png Bild und wie bringen die das in die GUI?
-
Ok, das Laden habe ich schon mal geschafft. Anzeigen ebenfalls. Was mit noch fehlt ist wie ich an einen bestimmten bereich in einem png auswählen kann
-
Mit GDI+ kannst du PNG Bilder laden, in einzelne Bilder unterteilen
und dazu verwenden, um beim Paint Event der Buttons die Bilder zu malen anstatt der üblichen Oberfläche.Edit: Oder so.
-
Also ich habe es jetzt so gelöst:
ULONG_PTR gdiplusToken; GdiplusStartupInput gdiplusStartupInput; GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); Bitmap *m_pBitmap = Bitmap::FromFile(L"CloseInaktiv.png"); HBITMAP hbm; m_pBitmap->GetHBITMAP(NULL, &hbm); SendMessage(hWndClose, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbm); GdiplusShutdown(gdiplusToken);
Allerdings habe ich immer noch keinen Ansatz, wie man einen bestimmten Bereich aus einem png lesen kann. Wäre vielleicht ganz schön wenn du/jemand noch was hätte(st). Eilt aber nicht da ich vorerst das große png in viele kleine gesplittet habe
-
Statt die Datei selber zu splitten, könntest du die Bitmap im Speicher aufteilen.
Dazu hat die GDI+ Bitmap Klasse die Clone Methode.
-
Mensch, dass man hier wirklich für jeden scheißdreck dieses gdi+ verwenden muss!
so ein png-loader ist schnell selbst geschrieben. und gute dekompressionsbibliotheken für den deflate-algorithmus gibt es bereits (siehe zlib).
-
wohl arbeitsscheu, was? schrieb:
Mensch, dass man hier wirklich für jeden scheißdreck dieses gdi+ verwenden muss!
so ein png-loader ist schnell selbst geschrieben. und gute dekompressionsbibliotheken für den deflate-algorithmus gibt es bereits (siehe zlib).
dann bitte mal schnell her damit!
-
ka schrieb:
wohl arbeitsscheu, was? schrieb:
Mensch, dass man hier wirklich für jeden scheißdreck dieses gdi+ verwenden muss!
so ein png-loader ist schnell selbst geschrieben. und gute dekompressionsbibliotheken für den deflate-algorithmus gibt es bereits (siehe zlib).
dann bitte mal schnell her damit!
kein problem. einfach editor öffnen und losprogrammieren. eine spezifikation findest du über google, genauso wie die zlib.
und fertige png-loader gibts auch wie sand am meer.
-
losprogrammieren!!! schrieb:
und fertige png-loader gibts auch wie sand am meer.
richtig du Held - z.B. Bitmap::FromFile() [GDI+]