1

Тема: AHK: GDI+ Редактировать прозрачное изображение

Так можно изменить размер и отобразить прозрачное изображение, не пойму как сохранить в файл без потери прозрачности.
Полагаю, что после DrawImage из Graphics надо получить Bitmap, но что то не то выходит.

Картинка.


#SingleInstance, Force
#NoEnv
SetBatchLines, -1

sFile = Исходный файл
oFile = %A_Desktop%\test.png  


pToken := Gdip_Startup()
OnExit, Exit

Gui, 1: -Caption +E0x80000 +LastFound +AlwaysOnTop +ToolWindow +OwnDialogs
Gui, 1: Show, NA
div := 0.6
hwnd1 := WinExist()

pBitmap := Gdip_CreateBitmapFromFile(sFile)
Width := Gdip_GetImageWidth(pBitmap), Height := Gdip_GetImageHeight(pBitmap)
hbm := CreateDIBSection(Width//div, Height//div)
hdc := CreateCompatibleDC()
obm := SelectObject(hdc, hbm)
G := Gdip_GraphicsFromHDC(hdc)
Gdip_SetInterpolationMode(G, 7)
Gdip_DrawImage(G, pBitmap, 0, 0, Width//div, Height//div, 0, 0, Width, Height)
UpdateLayeredWindow(hwnd1, hdc, 0, 0, Width//div, Height//div)

pBitmap := Gdip_CreateBitmapFromHBITMAP(hbm,hdc) 
Gdip_SaveBitmapToFile(pBitmap, oFile)

SelectObject(hdc, obm)	,DeleteObject(hbm)	,DeleteDC(hdc)
Gdip_DeleteGraphics(G),	Gdip_DisposeImage(pBitmap)
Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

2

Re: AHK: GDI+ Редактировать прозрачное изображение

pNewBitmap := Gdip_CreateBitmap(Width//div, Height//div)
G2 := Gdip_GraphicsFromImage(pNewBitmap)
Gdip_DrawImage(G2, pBitmap, 0, 0, Width//div, Height//div, 0, 0, Width, Height)
Gdip_SaveBitmapToFile(pNewBitmap, oFile)
Gdip_DeleteGraphics(G2), Gdip_DisposeImage(pNewBitmap)
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: GDI+ Редактировать прозрачное изображение

Оказалось наоборот, надо из прозрачного битмапа создать графику

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui