tBane |
» 2025-01-26 20:02:59 Wrzuciłem w ChatGPT i wypluł coś takiego. Może to pomoże.. 1. Konwersja PNG do BMPNajprostszym rozwiązaniem jest konwersja obrazów PNG do BMP przy użyciu dowolnego programu graficznego, np. Paint lub GIMP. Następnie możesz używać LoadBitmap bez dodatkowych problemów. 2. Ładowanie PNG za pomocą GDI+Jeśli chcesz zachować format PNG, możesz użyć GDI+ do wczytania obrazu i przekonwertowania go na bitmapę zgodną z WinAPI. Kod przykład: #include <gdiplus.h> #pragma comment(lib, "gdiplus.lib")
HBITMAP LoadPNGAsBitmap( HINSTANCE hInstance, LPCWSTR filename ) { Gdiplus::GdiplusStartupInput gdiplusStartupInput; ULONG_PTR gdiplusToken; Gdiplus::GdiplusStartup( & gdiplusToken, & gdiplusStartupInput, NULL ); Gdiplus::Bitmap * bitmap = Gdiplus::Bitmap::FromFile( filename ); if( !bitmap ) { MessageBox( NULL, L"Nie można załadować obrazu PNG", L"Błąd", MB_OK | MB_ICONERROR ); return NULL; } HBITMAP hBitmap = NULL; bitmap->GetHBITMAP( Gdiplus::Color( 0, 0, 0 ), & hBitmap ); delete bitmap; Gdiplus::GdiplusShutdown( gdiplusToken ); return hBitmap; }
Jak używać: Zamiast LoadBitmap, wywołaj: tekstura_przycisku1 = LoadPNGAsBitmap( hInstance, L"button1.png" ); if( !tekstura_przycisku1 ) { MessageBox( NULL, L"Błąd ładowania PNG", L"Informacja", MB_OK ); }
3. Ustawienie bitmapy w przyciskuPo załadowaniu bitmapy (czy to BMP, czy PNG przekonwertowanego przez GDI+), ustaw ją w przycisku za pomocą SendMessage: SendMessage( hButton1, BM_SETIMAGE, IMAGE_BITMAP,( LPARAM ) tekstura_przycisku1 );
|
|
AP1994 Temat założony przez niniejszego użytkownika |
» 2025-01-26 22:38:31 tBane chyba nie zwróciłeś uwagi na to że napisałem że problemu nie stanowi format tylko to że zmienne tekstur przycisków mają wartość NULL. A poza tym ChatGPT podał ci kod dla ścieżek plików a nie dla zasobów |
|
pekfos |
» 2025-01-26 23:02:55 |
|
AP1994 Temat założony przez niniejszego użytkownika |
» 2025-01-28 12:32:01 problem w tym że nawet pliki bmp mi nie chcą działać nawet po zmienieniu w pliku rc RCDATA na BITMAP |
|
pekfos |
» 2025-01-30 01:50:30 A inne zasoby działają? To jest wszystko czego potrzebujesz. #include <windows.h> #include <cstdio>
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { HBITMAP hbmObraz = LoadBitmap( hInstance, MAKEINTRESOURCE( 1001 ) ); printf( "bitmap: %p\n", hbmObraz ); return 0; } Jeżeli to nie działa, to masz coś nie tak z projektem. Na przykład nie dołączasz zasobów do programu, plik RC musi być skompilowany kompilatorem zasobów i linkowany z resztą programu. C:\stuff\_test_>windres res.rc -o res.o
C:\stuff\_test_>g++ a.cpp res.o
C:\stuff\_test_>a bitmap: ffffffff8c05141d Ale jak na przykład nie podam zasobów to program dalej się zbuduje: C:\stuff\_test_>g++ a.cpp
C:\stuff\_test_>a bitmap: 0000000000000000 |
|
AP1994 Temat założony przez niniejszego użytkownika |
» 2025-01-31 12:14:14 kompiluje program w Code::Blocks mingw mam zainstalowany osobno w konsoli dostałem bitmap: 0000000000000000 |
|
pekfos |
» 2025-01-31 22:10:40 |
|
AP1994 Temat założony przez niniejszego użytkownika |
» 2025-02-01 17:00:14
-------------- Build: Debug in open GL (compiler: GNU GCC Compiler)---------------
Target is up to date. Nothing to be done (all items are up-to-date).
-------------- Run: Debug in open GL (compiler: GNU GCC Compiler)---------------
Checking for existence: C:\Users\Adam\Desktop\eksperymenty informatyczne\Map editor v0.2\Debug\bin\open GL.exe Set variable: PATH=.;C:\Users\Adam\Desktop\eksperymenty informatyczne\Map editor v0.2\DLL;C:\Users\Adam\Documents\moje programy\biblioteki\allegro-x86_64-w64-mingw32-gcc-12.1.0-posix-seh-dynamic-5.2.8.0\lib;C:\MinGW\bin;C:\MinGW;C:\Windows\System32;C:\Windows;C:\Windows\System32\wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\dotnet;C:\Users\Adam\AppData\Local\Microsoft\WindowsApps;C:\Users\Adam\.dotnet\tools Executing: "C:\Program Files (x86)\Code Blocks\x64\CodeBlocks/cb_console_runner.exe" "C:\Users\Adam\Desktop\eksperymenty informatyczne\Map editor v0.2\Debug\bin\open GL.exe" (in C:\Users\Adam\Desktop\eksperymenty informatyczne\Map editor v0.2\.) Process terminated with status -1073741510 (0 minute(s), 4 second(s))
skopiowałem to z Build log |
|
1 « 2 » 3 4 |