1 (изменено: fyvfevfev, 2024-08-15 18:08:45)

Тема: AHK: Анимирование нажатия на картинку

Всех приветствую! Экспериментируя с GUI в AHK, я заметил, что кастомизация кнопок в AHK ограничена. Поэтому я решил написать функцию, которая позволяет анимировать картинки при нажатии на них, тем самым имитируя кнопку. Эта функция сжимает и разжимает картинку, чтобы создать эффект нажатия. Важно уточнить, что данная функция предполагает, что картинка находится ровно по центру окна. Хотел бы у вас спросить, может как-то можно улучшить данный код?

PicAnim(fps, picWidth, picHeight,	windowWidth, windowHeight, picID)
{
	fps_1 := Round(fps/2)
	
	Loop %fps_1%
	{
		picWidtht := picWidth - 10
		picHeight := picHeight - 10
		x := windowWidth/2 - picWidth/2
		y := windowHeight/2 - picHeight/2
		GuiControl, MoveDraw, %picID%, w%picWidth% h%picHeight% x%x% y%y%
		sleep 10
	}
	
	Loop %fps_1%
	{
		picWidth := picWidth + 10
		picHeight := picHeight + 10
		x := windowWidth/2 - picWidth/2
		y := windowHeight/2 - picHeight/2
		GuiControl, MoveDraw, %picID%, w%picWidth% h%picHeight% x%x% y%y%
		sleep 10
	}
}

2

Re: AHK: Анимирование нажатия на картинку

А что означают переменные Pic_weight и W_weight?
Что бы то ни было, я не советую использовать нижние подчёркивания в названиях переменных, это устаревший способ, выглядит громоздко. Сейчас принято, например, так: picHeight, и то только в том случае, если непонятно, какая именно высота имеется в виду. Лучше просто height, с маленькой буквы.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: fyvfevfev, 2024-08-15 04:01:12)

Re: AHK: Анимирование нажатия на картинку

teadrinker, понял вас, исправил.
На счет аргументов функции:
fps - задает кол-во кадров для обновления;
picWeight - ширина нашей картинки;
picHeight - высота нашей картинки;
windowWeight - ширина окна, в котором расположена картинка;
windowHeight - высота окна, в котором расположена картинка;
picID - ControlID нашей картинки.

4

Re: AHK: Анимирование нажатия на картинку

Weight  — это не ширина, это вес, ширина — width. У вас с каждым шагом ширина уменьшается на 10 пикселей, а что если картинка всего 30 пикселей? Лучше тогда уж задать шаг в параметрах. Два раза цикл туда/обратно писать не обязательно, можно создать внешний цикл в две итерации.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Анимирование нажатия на картинку

fyvfevfev Ещё бы готовый пример для теста добавить. Ранее уже было что-то подобное.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit), AHK v2.0.17| AHK-Wiki | Переменные и выражения | RegEx101