Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата Diamond:
Как сохранить созданный регион в файл, но самое главное как его потом загружать? »
думаю где-то так (извиняюсь - на комменты нет времени):
Код: Выделить весь код
Func _RegionSave($hRgn, $sFile)
    Local $aRet, $tBuf, $hFile, $iErr

    $aRet = DllCall($gdi32dll, "uint", "GetRegionData", "hwnd", $hRgn, "dword", 0, "ptr", 0)
    If $aRet[0]=0 Then Return SetError(2, 1, False)
    $tBuf = DllStructCreate("byte["& $aRet[0] &"]")
    $aRet = DllCall($gdi32dll, "uint", "GetRegionData", "hwnd", $hRgn, "dword", $aRet[0], "ptr", DllStructGetPtr($tBuf))
    If $aRet[0]=0 Then Return SetError(2, 2, False)

    $hFile = FileOpen($sFile, 18)
    If $hFile=-1 Then Return SetError(1, 1, False)
    $iErr = FileWrite($hFile, DllStructGetData($tBuf,1))

    FileClose($hFile)
    Return SetError($iErr, 2, False)
EndFunc

Func _RegionLoad($sFile)
    Local $aRet, $tBuf, $hFile, $bFile, $iErr

    $hFile = FileOpen($sFile, 16)
    If $hFile=-1 Then Return SetError(1, 0, 0)
    $bFile = FileRead ($hFile)
    $zFile = BinaryLen($bFile)
    FileClose($hFile)

    $tBuf = DllStructCreate("byte["& $zFile &"]")
    DllStructSetData($tBuf, 1, $bFile)
    $aRet = DllCall($gdi32dll, "hwnd", "ExtCreateRegion", "ptr", 0, "uint", $zFile, "ptr", DllStructGetPtr($tBuf))
    If $aRet=0 Then Return SetError(2, 0, 0)
    Return $aRet[0]
EndFunc
Цитата Diamond:
Сканировать изображение при каждом запуске скрипта, думаю, плохая идея »
думаю не очень - только придется отказаться от GetPixel, буферизовать всё изображение в память (например через _GDIPlus_BitmapLockBits) и работать уже с массивом пикселей без обращений к GDI

P.S. по ходу полученный регион отличается от исходной картинки, т.к. каждая строка развертки заменяется на две строки (прямоугольник), это так?
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:41, 10-09-2009 | #2