Что нового

Как найти размеры изображения в зависимости от масштабирования экрана

Viruzober

Новичок
Сообщения
5
Репутация
0
Здравствуйте. Пытаюсь подогнать размеры картинки в соответствии с масштабированием экрана. То есть в независимости от установленного у пользователя масштаба картинка должна найтись. Картинку делал на масштабе 100%, поменял на 125%, и не находит
Делаю так. Немного переделал UDF ImageSearch.

Код:
#Include <GDIPlus.au3>
; Получение dpi экрана
$DPI = MK_Get_DPI()
; Поиск изображения
_ImageSearch("Images\NIK_Logo.BMP", 0, $X, $Y, 1)
Func MK_Get_DPI()
$DPI = RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics", "AppliedDPI")
Return $DPI/96
; функция возвращает 1.25
EndFunc
Func MK_Get_ImageSize($Image)
_GDIPlus_Startup ()
$hImage = _GDIPlus_ImageLoadFromFile($Image)
Local $ImgSize[2]
$ImgSize[0] = _GDIPlus_ImageGetWidth($hImage)
$ImgSize[1] = _GDIPlus_ImageGetHeight($hImage)
_GDIPlus_ImageDispose ($hImage)
_GDIPlus_ShutDown ()
Return $ImgSize
EndFunc
Func _ImageSearch($findImage,$resultPosition,ByRef $x, ByRef $y,$tolerance)
return _ImageSearchArea($findImage,$resultPosition,0,0,@DesktopWidth,@DesktopHeight,$x,$y,$tolerance)
EndFunc
Func _ImageSearchArea($findImage,$resultPosition,$x1,$y1,$right,$bottom,ByRef $x, ByRef $y, $tolerance)
; Получение размеров изображения
$Size = MK_Get_ImageSize($findImage)
if $tolerance>0 then
; Собираем строку для функции из dll
$findImage = "*" & $tolerance & " " & "*w" & $Size[0]*$DPI & " " & "*H" & $Size[1]*$DPI & " " & $findImage
EndIf
$result = DllCall("ImageSearchDLL.dll","str","ImageSearch","int",$x1,"int",$y1,"int",$right,"int",$bottom,"str",$findImage)
if $result[0]="0" then
return 0
Else
$array = StringSplit($result[0],"|")
$x=Int(Number($array[2]))
$y=Int(Number($array[3]))
if $resultPosition=1 then
$x=$x + Int(Number($array[4])/2)
$y=$y + Int(Number($array[5])/2)
endif
return 1
EndIf
EndFunc

Как я думаю, умножение ширины и высоты на новый dpi должно дать необходимый масштаб изображения. Пробовал менять разрешение. У меня по умолчанию 1920x1080. При смене разрешения изображение естественно находится. При смене масштаба на любом разрешении не находит. Помогите разобраться.
 
Автор
V

Viruzober

Новичок
Сообщения
5
Репутация
0
Не нашёл как отредактировать пост. Попробовал другие форматы png, jpg, ситуация та же. При умножении ширины и высоты картинки на dpi не находит. Помогите пожалуйста разобраться как правильно масштабировать изображение.
 
Автор
V

Viruzober

Новичок
Сообщения
5
Репутация
0
У Вас эти кнопки есть внизу?
Извините, но в силу отсутствия зрения я пользуюсь программами экранного доступа. Картинку посмотреть не могу. Кнопок судя по всему нет, на старом форуме были. Если вы сможете описать примерно после каких объектов они находятся, постараюсь найти.

Вот теперь появилась кнопка редактировать, но только для новых сообщений. Для старых постов её всё равно нет.
 
Последнее редактирование:
Верх