1 (изменено: Clannad5, 2021-04-11 06:32:47)

Тема: AHK: GUI скругление углов

Собственно интересуют дополнительные способы по работе с GUI, а именно:

Как мне из квадратного GUI окна сделать скругленные, чтобы было примерно так:
https://i.imgur.com/zcNJ9rt.png


И есть ли дополнительная справка по применению Gdip или таких частей кода с наименованием: HB
Везде ищу, никак не могу найти.

Но конкретно хотелось бы еще услышать про скругление углов GUI окон.

Нашел только такой способ:

WinSet, Region, 0-0 w196 h297 R, WinTitle

У этого способа края слишком чёткие, что аж в глазах рябят эти пиксели.

https://i.imgur.com/zUUCWHV.png
но можно ли это назвать решением проблемы?
Есть что-то похожее конкретно для GUI настройки?

2

Re: AHK: GUI скругление углов

Кроме WinSet, Region для стандартных окон ничего не предусмотрено. Можно нарисовать своё окно с помощью GDIp.ahk, но стандартные контролы туда добавить нельзя.

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

3 (изменено: Clannad5, 2021-04-11 11:46:43)

Re: AHK: GUI скругление углов

teadrinker
Я что-то нашел с GDIP, что можно использовать изображение в качестве создания Маски и посредством этого вырезать уже нужную форму окна:
https://www.autohotkey.com/boards/viewtopic.php?t=33410

Но у меня есть проблема с GDip_All.ahk

Gdip.ahk предназначена только для 32х битного AHK компилятора, а на 64x не работает.
Искал в интернете решение проблемы, там нашел ответ, что для 64x битных систем требуется отдельная библиотека под названием: GDip_All.ahk
Я её скачал, прописал в #Include, но скрипт все равно не выводит изображение, хотя сам скрипт ошибок не выдаёт.

С чем это может быть связано?Проверял на Win7 Home Basic и на Win 10 x64, тот же результат.
Прикладываю сам скрипт и библиотеку, сможете помочь определить проблему?

https://mfd.sk/dT0q-noiuZtMcDlNE7dphWOw

Если компилятор ставить на x32 бит, то окно выводится как и должно быть(на странность окна не смотрите, это лишь пример.):
https://i.imgur.com/oJkx9bW.png

Но если компилятор ставлю на х64 бит, то сам скрипт запускается, но изображение не выводится.

И еще: Можете, пожалуйста, просветить, что делает функция:

pToken := Gdip_Startup()

Никак не могу понять.
Предполагаю что она грузит Gdip библиотеку, но вопрос откуда?Т.к если я не прописываю #Include, то мне выдаёт ошибку с этой строчкой кода.
Есть ли смысл от этой строчки кода, если я прописываю #Include GDip_All.ahk?

4

Re: AHK: GUI скругление углов

Clannad5 пишет:

У этого способа края слишком чёткие, что аж в глазах рябят эти пиксели.

Так и задумано, происходит вырезание пикселей. А Вам, похоже, требуется градиентная (частичная) прозрачность пограничных пикселей. Что-то такое на форуме давно обсуждали. Если мне не изменяет память, делалось окно, у которого в качестве фона использовалась GIF или PNG картинка: уголки со 100% прозрачностью, границы уголков с градиентной прозрачностью.

5 (изменено: __Михаил__, 2021-04-11 12:09:48)

Re: AHK: GUI скругление углов

Функция 'Gdip_Startup()' - что-то наподобие запуска возможностей GDip.
Другими словами без этой строки пользоваться GDip библиотекой не выйдет.

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

6

Re: AHK: GUI скругление углов

__Михаил__

Это я уже понял на практике, спасибо.
Но я не пойму, как некоторые люди пользуются GDip'ом не используя строчку кода #Include.
Сама библиотека Gdip помещается куда-то в иное место?

7

Re: AHK: GUI скругление углов

Clannad5 пишет:

Gdip.ahk предназначена только для 32х битного AHK компилятора, а на 64x не работает.

Нет, таких проблем нету, уже много лет библиотека предназначена для обеих версий.
Это код, который вы используете, предназначен только для 32 бит. Читайте пост до конца.

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

8

Re: AHK: GUI скругление углов

Clannad5, наверное в "Библиотеки" надо кинуть.

9

Re: AHK: GUI скругление углов

teadrinker

А вы говорили что есть какая-то тема с работой альфа-каналов, где Gdip, в принципе, не нужен.
Не могли бы помочь с поиском этой темы?

Да и вообще, влияет ли использование 32bit на производительность, если строчек кода будет от силы 5-7к, не требующие какой-то супер-быстрой отрисовки?
Есть какие-то ощутимые разницы, кроме как наличие доступности оперативной памяти?

10

Re: AHK: GUI скругление углов

Clannad5 пишет:

А вы говорили что есть какая-то тема с работой альфа-каналов, где Gdip, в принципе, не нужен.

Я, честно говоря, не помню. Для чего-то может и не нужен, для чего-то нужен, смотря какая задача. Для чего-то его использовать не обязательно, но просто удобнее.

Clannad5 пишет:

Да и вообще, влияет ли использование 32bit на производительность

В большинстве случаев разницы не увидите.

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

11 (изменено: __Михаил__, 2021-04-11 12:54:44)

Re: AHK: GUI скругление углов

Clannad5 пишет:

Но я не пойму, как некоторые люди пользуются GDip'ом не используя строчку кода #Include.

Можно использовать прямую отправку данных через 'DllCall', использовать class GDIplus.
У меня так скриншоты через скрипт делаются.

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

12

Re: AHK: GUI скругление углов

Чтобы не нужно было писать #Include при использовании GDIp.ahk, можно поместить её в одну из папок, которые называются пользовательскими библиотеками. Их адреса перечислены здесь.

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

13

Re: AHK: GUI скругление углов

Используй фотошоп. Я так делаю GUI. и  отгружай картинки на диск C;/

14

Re: AHK: GUI скругление углов

DmitryZet, если хотите общаться на форуме, исправьте указанные ошибки в оформлении. До внесения исправлений вам запрещается оставлять сообщения и создавать новые темы.

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