Скриншот в Линукс |
Здравствуйте, гость ( Вход | Регистрация )
Скриншот в Линукс |
V7T |
11.10.2011, 20:45
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 11.10.2011 Пользователь №: 2939 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здравствуйте, уважаемые форумчане!
Сразу скажу c QT и линуксом, до сих пор, дела никогда не имел, да и с плюсами очень мало работал, в основном программировал на шарпе. Суть такова, нужно написать простенькое приложение клиент-сервер, клиент каждые несколько секунд делает скриншот всей области экрана с последующей отправкой его на сервер. В принципе литературу перелопатил малость "основы программирования в линукс". Приложение пишу консольное. Нашел код в интернете, который делает скрин, и столкнулся с проблемой... .... #include <qpixmap.h> int main(int argc, char *argv[]) { ... QPixmap screenshot = QPixmap::grabWindow(qt_xrootwin()); screenshot.save(QString(getenv("HOME"))+"/screen.png","PNG",100); return 0; ... } ... что за метод qt_xrootwin()? При компилировании ругается "error: ‘qt_xscreen’ was not declared in this scope". На просторах инета ни черта не нашел. И по сему, уважаемые, решил обратиться к вам. Подскажите, может нужно подключить библиотеку какую-нибудь(я копался в СДК QT и видел пример приложения СКРИНШОТ, но мне хотелось бы использовать именно данный, т.к. сразу в таймер загнал этот маленький кусок и все)? Спасибо. |
|
|
registr |
11.10.2011, 21:55
Сообщение
#2
|
Участник Группа: Участник Сообщений: 115 Регистрация: 16.11.2009 Пользователь №: 1234 Спасибо сказали: 8 раз(а) Репутация: 1 |
Похоже, что это какая-то самописная функция.
Qt Assistant: QPixmap QPixmap::grabWindow ( WId window, int x = 0, int y = 0, int width = -1, int height = -1 ) Creates and returns a pixmap constructed by grabbing the contents of the given window restricted by QRect(x, y, width, height). The arguments (x, y) specify the offset in the window, whereas (width, height) specify the area to be copied. If width is negative, the function copies everything to the right border of the window. If height is negative, the function copies everything to the bottom of the window. Ты лучше сам ее допиши. Т.е. сам вставь нужные значения. Читаем дальше: The window system identifier (WId) can be retrieved using the QWidget::winId() function. The rationale for using a window identifier and not a QWidget, is to enable grabbing of windows that are not part of the application, window system frames, and so on. The grabWindow() function grabs pixels from the screen, not from the window, i.e. if there is another window partially or entirely over the one you grab, you get pixels from the overlying window, too. The mouse cursor is generally not grabbed. Сообщение отредактировал registr - 11.10.2011, 21:55 |
|
|
DOGG |
12.10.2011, 14:13
Сообщение
#3
|
Студент Группа: Участник Сообщений: 44 Регистрация: 9.8.2011 Из: Калининград Пользователь №: 2798 Спасибо сказали: 6 раз(а) Репутация: 0 |
qt_xrootwin() - скорее всего это функция получения WId виртуального корневого окна в X Window System.
Ищите как его определить и сможете сами ее дописать (можете вот сдесь посмотреть вот сдесь есть про это). Сообщение отредактировал DOGG - 12.10.2011, 14:14 |
|
|
V7T |
13.10.2011, 10:22
Сообщение
#4
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 11.10.2011 Пользователь №: 2939 Спасибо сказали: 0 раз(а) Репутация: 0 |
Спасибо вам.
Как оказалось ни чего сложного не было: QPixmap screenshot = QPixmap::grabWindow(QApplication::desktop()->winId()); |
|
|
Текстовая версия | Сейчас: 21.11.2024, 20:22 |