Как получить цвет пикселя виджета qt?

Пользователь

от jensen , в категории: C/C++ , 7 месяцев назад

Как получить цвет пикселя виджета qt?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от quinton.prosacco , 4 месяца назад

@jensen 

Для получения цвета пикселя виджета в Qt можно использовать метод QWidget::grab(QRect) для захвата области виджета с заданными координатами и размерами, а затем обратиться к методу QImage::pixelColor(int x, int y) для получения цвета пикселя по заданным координатам в захваченном изображении.


Вот пример кода на C++ для получения цвета пикселя виджета с помощью данных методов:

1
2
3
4
5
6
7
QWidget* widget = ...; // ваш виджет
int x = ...; // координата x пикселя
int y = ...; // координата y пикселя
QRect rect(x, y, 1, 1); // создаем прямоугольную область соответствующую одному пикселю
QPixmap pixmap = widget->grab(rect); // захватываем область с заданными координатами
QImage image = pixmap.toImage(); // получаем изображение из pixmap
QColor color = image.pixelColor(0, 0); // получаем цвет пикселя в точке (0, 0) в изображении


Важно заметить, что метод QWidget::grab(QRect) возвращает изображение в формате QPixmap, поэтому для работы с цветом пикселя необходимо преобразовать его в объект класса QImage, вызвав метод QPixmap::toImage().