Что нового

Как сделать скриншот, размыть его и поместить в GUI?

sss

Продвинутый
Сообщения
332
Репутация
96
Всем доброго времени суток. Начал подступать к библиотеке GDIPlus.au3. Понимаю, что инструмент мощный, но не поминаю как реализовать помещение битмапа в GUI-окно, и, если возможно, немного размыть его. Задача - сделать скриншот, поместить его в GUI-окно со стилем $WS_POPUP, если возможно, немного размыть (а если вообще самый лучший вариант, то еще и немного обесцветить...). Пока сделал так (размытия нет, но хоть работает...)
Код:
#include <GUIConstants.au3>
#include <ScreenCapture.au3>
#include <WindowsConstants.au3>

$screenshot_HBITMAP=_ScreenCapture_Capture('C:\screenshot.bmp')

Guicreate('',1280,1024,0,0,$WS_POPUP)
GUICtrlCreatePic('C:\screenshot.bmp',0,0,1280,1024)
GUISetState()
Sleep(5000)

Но при этом создается файл C:\screenshot.bmp. Не критично, но неудобно. Помогите пожалуйста с реализацией вставки битмапов в окно и их размытием\обесцвечиванием, буду очень признателен!
P.S.: Не пинайте если вопрос глупый - только-только сел за GDI, ничего не понятно, мозг прыгает как ошпаренный... :smile:
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 714
Код:
#Include <GUIConstants.au3>
#Include <ScreenCapture.au3>
#Include <WindowsConstants.au3>

$screenshot_HBITMAP = _ScreenCapture_Capture()

GUICreate('', 1280, 1024, 0, 0, $WS_POPUP)
GUICtrlCreatePic('', 0, 0, 1280, 1024)
GUICtrlSendMsg(-1, 0x0172, 0, $screenshot_HBITMAP) ; GUICtrlSendMsg(-1, $STM_SETIMAGE, $IMAGE_BITMAP, $screenshot_HBITMAP)
GUISetState()
Sleep(5000)


Насчет размытия ничего не могу сказать.
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
Yashied
Твой метод дает очень страные результаты - половины объектов нету, например, развернутый SciTe не видно вообще, только серый фон и иконка в левом верхнем углу. С некоторыми элементами также.
`p r o x y
Спасибо за совет, получилось сделать, да еще и разобрался в этих функциях. Почему-то не думал, что будут примеры на GDI в стандартном наборе... Сглупил. Пойду дальше разбираться...
Насчет размытия - может есть какие-то консольные редакторы картинок? Наподобие корректировщиков каких-нибудь...
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Если не ошибаюсь, эффекты с изображениями, это смещение байт в файле и т.д. Может, стоит поискать описание технологий и попробовать самому? Хотя, стороннее приложение в консольном варианте это очень хороший вариант.
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
Кажется, нашел вариант. Называется ImageMagick. Нашел размытие, что уже плюс. Также много команд (и огромный мануал :smile:). Вот домашняя страница - http://www.imagemagick.org. Пойду копаться, вдруг получится... (есть версии под Windows и Linux)

Получилось. Опытным путем выяснил что для запуска команды размытия нужно всего 2 файла (а в архиве проги их 45) - convert.exe и vcomp100.dll. Код запуска размытия:
Код:
convert исходная_картинка -gaussian-blur 5x3 конечная_картинка
С AutoIt работает хорошо, проблем с запуском нет, видимых окон нет.
Тему считаю закрытой, всем огромное спасибо!
 

ivanius

Знающий
Сообщения
74
Репутация
5
Простите пожалуйста что поднимаю тему, но аналогов не нашел.
Вопрос а можно ли прямо к vcomp100.dll обращатся без обвертки в виде exe.
ладно зря спросил, ексешко по ползуюсь.
 
Верх