скриншот экрана

Простейшие вопросы в области инженерной разработки
temples
assistant
assistant
Сообщения: 103
Зарегистрирован: 25 фев 2015, 10:00
Версия LabVIEW: 14.0f1
Контактная информация:

скриншот экрана

Сообщение temples »

Подскажите, пожалуйста, как можно программно сделать скриншот экрана и одного выбранного контрола?
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: скриншот экрана

Сообщение dadreamer »

Снимок контрола/индикатора делается просто:
Snippet.png
Snippet.png (18.93 КБ) 14731 просмотр
А насчёт первого - принципиально нужен снимок всего экрана? Или конкретного окна ( :vi: )?
temples
assistant
assistant
Сообщения: 103
Зарегистрирован: 25 фев 2015, 10:00
Версия LabVIEW: 14.0f1
Контактная информация:

Re: скриншот экрана

Сообщение temples »

Отлично! То, что надо. У меня почти весь экран занимает TabControl, собственно, его и нужно сфотографировать.
Сделал примерчик. Вроде всё хорошо, но только почему-то корешки с названиями страниц обрезаются. Это лечится?
Вложения
TabControl.png
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5462
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 86 раз

Re: скриншот экрана

Сообщение IvanLis »

temples писал(а):Отлично! То, что надо. У меня почти весь экран занимает TabControl, собственно, его и нужно сфотографировать.
Сделал примерчик. Вроде всё хорошо, но только почему-то корешки с названиями страниц обрезаются. Это лечится?
Можно скрин всей лицевой панели сделать, а потом вырезать необходимую область.
Untitled 1.vi
lv2010
(15.15 КБ) 326 скачиваний
1.png
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: скриншот экрана

Сообщение dadreamer »

temples писал(а):Это лечится?
Вряд ли, вообще Get Image странный метод. Для каких-то объектов работает, для каких-то - нет. В качестве альтернативы могу предложить снимок всего окна / VI, если решение IvanLis не устроит.
temples
assistant
assistant
Сообщения: 103
Зарегистрирован: 25 фев 2015, 10:00
Версия LabVIEW: 14.0f1
Контактная информация:

Re: скриншот экрана

Сообщение temples »

Спасибо большое!
Попробовал программку от IvanLis. При первом запуске нормально отработала, но когда я потаскал FP по экрану, стала глючить - не может точно определить положение контрола. Думаю, вернусь к первому варианту с Get Image. Корешки мне нужны были только как комментарий. Могу вместо них просто текст впечатывать.
Чем меня эта функция особо порадовала, так тем, что даже если сдвинуть за край экрана, то снимок будет нормальный.

Кстати, как можно увеличить размер холста картинки? Например, сверху картинки прикрепить белую полоску?
И как можно склеить две картинки?
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5462
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 86 раз

Re: скриншот экрана

Сообщение IvanLis »

temples писал(а):Кстати, как можно увеличить размер холста картинки? Например, сверху картинки прикрепить белую полоску?
И как можно склеить две картинки?
Картинка это двумерный массив пикселей.
Т.е. можно и работать как с массивом.
temples
assistant
assistant
Сообщения: 103
Зарегистрирован: 25 фев 2015, 10:00
Версия LabVIEW: 14.0f1
Контактная информация:

Re: скриншот экрана

Сообщение temples »

Неужели нет стандартной функции? Обрезка ведь есть.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: скриншот экрана

Сообщение dadreamer »

Выложу здесь свой :vi: , который делал для фотографирования окошек. Может, пригодится.
Get Image By HWND.rar
(31.86 КБ) 369 скачиваний
Использовать можно так:
2015-06-11_19-06-06.jpg
2015-06-11_19-06-06.jpg (25.09 КБ) 14668 просмотров
Получается вот что:
2015-06-11_19-05-44.jpg
Если BitBlt = True, то для создания снимка используется BitBlt, иначе PrintWindow. В первом случае учитываются новые стили Windows, такие как Aero и прочие с частичной прозрачностью, во втором - нет. Однако в первом случае окно некорректно фоткается, если оно частично за пределами экрана (то, что за границей, будет черным). Во втором такого недостатка нет. Я ранее много экспериментировал с этим, но до конца так и не добился цели - нужно было снимать скрин с ActiveX окна с видеопотоком. Окно фоткалось, а видео в нём - нет.
temples писал(а):Неужели нет стандартной функции? Обрезка ведь есть.
То, что предоставляется в :labview: по умолчанию, это базовый функционал. В нём нет множества функций для работы с изображениями. Для полноценной работы рекомендую поставить NI Vision Development Module. Там и склейка картинок имеется. Если же влом ставить модуль, то можете реализовать сами, посмотрите похожую тему: http://www.labviewportal.org/viewtopic. ... 414#p63414
temples
assistant
assistant
Сообщения: 103
Зарегистрирован: 25 фев 2015, 10:00
Версия LabVIEW: 14.0f1
Контактная информация:

Re: скриншот экрана

Сообщение temples »

Всем большое спасибо!
С задачей легко справился с помощью метода TabControl.Get Image .
Bam1970
interested
interested
Сообщения: 5
Зарегистрирован: 28 сен 2015, 11:07
Версия LabVIEW: 11
Контактная информация:

Re: скриншот экрана

Сообщение Bam1970 »

Re: скриншот экрана
dadreamer 11 июн 2015, 20:19

Выложу здесь свой , который делал для фотографирования окошек. Может, пригодится.
Get Image By HWND.rar
(31.86 КБ) Скачиваний: 15

Использовать можно так:

2015-06-11_19-06-06.jpg (25.09 КБ) Просмотров: 418

Здравствуйте!
Очень актуально для меня скриншот активного экрана.
Нужно сохранить скриншот в jpeg файле.
У вас выход дата в RGB формате, ReadJpeg конечно не воспримет.
Что посоветуете?
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: скриншот экрана

Сообщение dadreamer »

BxTrix писал(а):Что посоветуете?
Flatten Pixmap + Write JPEG File
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: скриншот экрана

Сообщение Borjomy_1 »

Но лучше сохранять в png. Этот формат сжатия без потерь. Картинка скриншота, записанная в png, не расплывается, в отличие от jpg
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5462
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 86 раз

Re: скриншот экрана

Сообщение IvanLis »

Borjomy_1 писал(а):Но лучше сохранять в png. Этот формат сжатия без потерь. Картинка скриншота, записанная в png, не расплывается, в отличие от jpg
Я как-то делал поиск кнопки на экране.
Пришел к выводу, что самый оптимальный для этого несжатый bmp. Несмотря на больший размер файла, обеспечивает максимальную скорость чтение/запись. Ну и соответственно цветопередача 1:1.
mak36999
beginner
beginner
Сообщения: 15
Зарегистрирован: 15 дек 2014, 20:30
Версия LabVIEW: 8.6
Контактная информация:

Re: скриншот экрана

Сообщение mak36999 »

А как сделать скриншот контрола из другого VI? Спасибо
Ответить

Вернуться в «Для чайников»