Benutzer mit den meisten Antworten
Wie kann ich eine PNG-Datei unter Windows CE 6.0 laden?

Frage
-
Hallo,
bisher habe ich noch keine Möglichkeit gefunden ein PNG Bild aus einer Resource Datei zu laden. Vlt. weiß ja jemand im Forum Rat :-)
Ich habe beim googlen gesehen, dass es einige Methoden (SHLoadImageResource, GDI+, libpng und CImage) gibt, allerdings werden die nicht von meiner Plattform unterstützt bzw. erscheinen mir etwas aufwändig. Gibt es eine einfache und schöne Methode mit den Hausmitteln das Problem zu lösen? Habe ich evtl. was übersehen?
Hintergrund: In meinem Projekt wird die GUI mit Silverlight dargestellt. Nachdem ich nun meinen User Control erzeugt habe, möchte ich dem Image Control nun eine png-Datei übergeben. Eine bmp-Datei kann ich ohne Probleme mit HBITMAP myBitmap = LoadBitmap(myInstance, MAKEINTRESOURCE(IDB_BITMAP1)) laden und an das Image Control übergeben.
Danke und Gruß
Deniz
Antworten
-
In Deinem CE ist GDI+ enthalten. GDI+ kann auch PNG Dateien laden verarbeiten.
Siehe auch hier:
http://www.codeproject.com/KB/GDI-plus/cgdiplusbitmap.aspx
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort markiert Martin RichterModerator Freitag, 15. Oktober 2010 07:25
-
Ist GDI+ wirklich offiziell in Windows Mobile 6 enthalten?
Nach meinen Wissen seit der Mobile 5 Version.
Siehe auch hier:
http://community.opennetcf.com/articles/cf/archive/2007/10/31/using-gdi-on-windows-mobile.aspx
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort markiert Martin RichterModerator Freitag, 15. Oktober 2010 07:25
Alle Antworten
-
In Deinem CE ist GDI+ enthalten. GDI+ kann auch PNG Dateien laden verarbeiten.
Siehe auch hier:
http://www.codeproject.com/KB/GDI-plus/cgdiplusbitmap.aspx
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort markiert Martin RichterModerator Freitag, 15. Oktober 2010 07:25
-
Ist GDI+ wirklich offiziell in Windows Mobile 6 enthalten?
Ich habe mich damit abgefunden, z. B. unter Windows Mobile PNGs nicht aus der Ressource, sondern vom Filesystem zu laden:
// Create the imaging factory. hr = CoCreateInstance (CLSID_ImagingFactory, NULL, CLSCTX_INPROC_SERVER, IID_IImagingFactory, (void **)&s_pImgFactory); if (SUCCEEDED(hr)) { hr = s_pImgFactory->CreateImageFromFile(szFilename, &s_pImgBkgr); if (FAILED(hr)) s_pImgBkgr = NULL; } ... OnDraw... ImageInfo imgInfo; // wir vergrößern das Hintergrundbild nicht (eher verkleinern es auf die Displaygröße) hr = s_pImgBkgr->GetImageInfo(&imgInfo); if (SUCCEEDED(hr)) { SIZE sizeImg = {imgInfo.Width, imgInfo.Height }; // aber wir verkleinern es, wenn nötig if (sizeImg.cx > rcClient.right - rcClient.left) sizeImg.cx = rcClient.right - rcClient.left; if (sizeImg.cy > rcClient.bottom - rcClient.top) sizeImg.cy = rcClient.bottom - rcClient.top; // das Bild zentrieren RECT rcImg; rcImg.left = ((rcClient.right - rcClient.left) - sizeImg.cx)/2; rcImg.top = ((rcClient.bottom - rcClient.top) - sizeImg.cy)/2; rcImg.right = rcImg.left + sizeImg.cx; rcImg.bottom = rcImg.top + sizeImg.cy; hr = s_pImgBkgr->Draw(hdcMem, &rcImg, NULL); if (FAILED(hr)) { TRACE(_T("Fehler 0x%08X beim Zeichnen des Hintergrundbildes.\n"), hr); } }
Falls aber gdiplus auf dem Zielsystem verfügbar ist, ziehe gdiplus vor. Damit bist du flexibler, falls du mehr machen möchstest, als nur darstellen (Draw).
-
Ist GDI+ wirklich offiziell in Windows Mobile 6 enthalten?
Nach meinen Wissen seit der Mobile 5 Version.
Siehe auch hier:
http://community.opennetcf.com/articles/cf/archive/2007/10/31/using-gdi-on-windows-mobile.aspx
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort markiert Martin RichterModerator Freitag, 15. Oktober 2010 07:25
-
Das klingt gut: GDI Plus als PhoneWare. Gelällt mir.
Bei mir fehlt das GDI-Plus-Thema in MSDN-Doku, welche mit dem Windows Mobile Platform SDK 6 ausgeliefert wird.
Aber wenn es funktional das gleiche ist, wir auf den Desktop-Systemen, dann ists ja schön.
Danke