우선 본 함수는 Gdip_all.ahk 가 필요함을 말씀드립니다.
Gdip_all.ahk는 아래 주소에서 다운받으실수 있습니다.
https://github.com/marius-sucan/AHK-GDIp-Library-Compilation
/*
BLACKONWHITE := 1
제거되거나 존재하는 픽셀의 색상 값을 사용하여 AND 연산자를 수행합니다.
흑백 비트맵의 경우 흰 픽셀을 훼손시키고 검은 픽셀을 보존합니다.
COLORONCOLOR := 2
픽셀을 삭제합니다.
모두 제거된 픽셀 줄의 정보를 보존하지 않고 삭제합니다.
HALFTONE := 3
원본 사각형에서 대상 사각형 안의 픽셀 영역으로 픽셀을 보여줍니다. *
대상 픽셀의 평균 색상을 원본 픽셀 색상으로 근사치로 계산합니다.
WHITEONBLACK := 4
제거되거나 존재하는 픽셀의 색상 값을 사용하여 OR 연산자를 수행합니다.
흑백 비트맵의 경우 검은 픽셀을 훼손시키고 흰 픽셀을 보존합니다.
*/
ImageSizeChange(pBitmap,dx,dy,dw,dh,sx,sy,sw,sh,StretchMode=4)
{
hbm := Gdip_CreateHBITMAPFromBitmap(pBitmap)
hhdc := CreateCompatibleDC()
obm := SelectObject(hhdc, hbm)
chdc := CreateCompatibleDC(), hbm2 := CreateDIBSection(dw, dh, chdc), obm2 := SelectObject(chdc, hbm2)
SetStretchBltMode(chdc, StretchMode)
StretchBlt(chdc, dx,dy, dw, dh, hhdc, sx, sy, sw, sh)
nBitmap := Gdip_CreateBitmapFromHBITMAP(hbm2)
SelectObject(chdc, obm2), DeleteObject(hbm2), DeleteDC(chdc)
deleteobject(obm), DeleteObject(hbm),deleteDC(hhdc)
Gdip_DisposeImage(pBitmap)
return nBitmap
}
매개변수 설명
pBitmap 변경하고자하는 원본 비트맵
dx 사이즈 변경된 비트맵의 시작위치x
dy 사이즈 변경된 비트맵의 시작위치y
dw 사이즈 변경된 비트맵의 너비
dh 사이즈 변경된 비트맵의 높이
sx 원본 비트맵에서의 시작위치x
sy 원본 비트맵에서의 시작위치y
sw 원본 비트맵에서의 복사할 너비
sh 원본 비트맵에서의 복사할 높이
StretchMode 사이즈 변경 시 픽셀을 카피하는 방법 저도 자세히는 모릅니다.SetStretchBltMode에서 사용되며 이를 사용하지 않을 시 축소시에 그래픽이 깨집니다. 다만 이 함수를 사용시 확대시에 약간 흐려집니다.
경험상 확대시에는 StretchMode 값을 1 축소시에는 4로 놓는 것이 좋습니다.
이상입니다.
버그 및 문의는 댓글 부탁드립니다.
'오토핫키' 카테고리의 다른 글
Gdip_all ahk를 이용한 Bitmap의 size 변경 함수 (1) | 2022.09.30 |
---|---|
우회에 대한 이모저모 (1) | 2022.09.30 |
던파 매크로 구해봅니다 (0) | 2022.09.30 |
롤 봇전 매크로 필요하신분 계신가요? (0) | 2022.09.30 |
두개이미지 틀린점 을 비교 해서 고수님들 봐주십시요 굽신 굽신 (0) | 2022.09.29 |
우회에 대한 이모저모 (1) | 2022.09.29 |
던파 매크로 구해봅니다 (0) | 2022.09.29 |
롤 봇전 매크로 필요하신분 계신가요? (0) | 2022.09.29 |
이제는 자체 에디터나 리더기도 필요없겠네요 (0) | 2022.09.29 |
함수를 만들었는데 원하는대로 작동을 안하네요 좀 봐주세요 (1) | 2022.09.29 |