Код (Text): invoke GdiplusStartup, token, input, 0 test eax,eax jnz exit invoke GdipGetImageEncodersSize, encoders_count, encoders_size test eax,eax jnz gdiplus_shutdown invoke VirtualAlloc,0, [encoders_size], MEM_COMMIT, PAGE_READWRITE test eax,eax jz gdiplus_shutdown mov ebx,eax invoke GdipGetImageEncoders, [encoders_count], [encoders_size], ebx test eax,eax jnz gdiplus_shutdown scan_encoders: mov esi,[ebx+ImageCodecInfo.MimeType] mov edi,encoder_mimetype mov ecx,10 repe cmpsw je encoder_found add ebx,sizeof.ImageCodecInfo dec [encoders_count] jnz scan_encoders ; no encoder found jmp gdiplus_shutdown encoder_found: lea esi,[ebx+ImageCodecInfo.Clsid] mov edi,encoder_clsid mov ecx,4 rep movsd invoke VirtualFree, ebx, 0, MEM_RELEASE invoke GdipCreateBitmapFromFile, filename, gdip_bitmap invoke GdipSaveImageToFile, [gdip_bitmap], filename2, encoder_clsid, 0 invoke GdipDisposeImage, [gdip_bitmap] gdiplus_shutdown: invoke GdiplusShutdown, [token] ;... filename2 du 'test.png',0 encoder_mimetype du 'image/png',0 input GdiplusStartupInput 1 encoder_clsid db 16 dup ? token dd ? gdip_bitmap dd ? encoders_count dd ? encoders_size dd ? После запуска рядом с png рисунком появляется ещё один, тоже с прозрачностью. Дальше добавил в конце: invoke GdipCreateHBITMAPFromBitmap,[gdip_bitmap],hBitmap,0 invoke GetDC,[hWin] invoke BitBlt,eax,0,0,32,32,[gdip_bitmap],20,20,SRCCOPY Не получилось. Пробовал с помощью pnglib. Удобно, но там рисуется вся картинка, без "прозрачности". Помогите пожалуйста.
Спасибо за примеры. Оказалось достаточно всего 4 строки, чтобы нарисовать картинку: Код (Text): invoke GdiplusStartup,token,input,0 invoke GdipCreateFromHWND, [hWin], graphics invoke GdipDrawImageRect, [graphics], [gdip_bitmap], 0, 0, 64.0, 64.0 invoke GdipDisposeImage,[gdip_bitmap] А как можно отрисовать png который не на диске и не в ресурсах, а в памяти по адресу 420000h, не сохраняя его на диск?
Готово. Сделал как в BitmapFromMemory: Код (Text): invoke GdiplusStartup,token,input,0 mov ebx,3478 invoke CoTaskMemAlloc,ebx xor ecx,ecx mov esi,samplefile @@: mov edx,dword[esi+ecx] mov dword[eax+ecx],edx add ecx,4 cmp ecx,ebx jb @B invoke CreateStreamOnHGlobal,eax,1,hStream invoke GdipCreateBitmapFromStream,[hStream],gdip_bitmap invoke GdipCreateFromHWND,[hWin],graphics invoke GdipDrawImageRect,[graphics],[gdip_bitmap],0,0,64.0,64.0 invoke GdiplusShutdown,[token]