• 11879阅读
  • 8回复

得到屏幕某点的像素值 [复制链接]

上一主题 下一主题
离线haiyong_wu
 

只看楼主 正序阅读 楼主  发表于: 2007-10-30
得到屏幕某点的像素值
— 本帖被 XChinux 执行加亮操作(2008-07-18) —
请问qt3中是否提供了获取某点像素值的函数,类似于mfc的GetPixel()函数?
离线euniceet
只看该作者 8楼 发表于: 2012-03-21
非常有用,顶一个!
离线wxyao

只看该作者 7楼 发表于: 2011-04-15
源代码,和效果见:
http://www.qtcn.org/bbs/read.php?tid=36000
离线wxyao

只看该作者 6楼 发表于: 2011-04-15
回 5楼(roywillow) 的帖子
只获取一个点不知道效率能不能更高些,我使用QPixmap::grabWindow(QApplication::desktop()->winId()); 就要150毫秒

=======================
太好啦,太感谢啦,按照你说的,改成下面这样抓那个点,所用时间很少,前后不到一毫秒! 很高兴,我是想做一个取屏幕某个点的像素的小程序。

QPixmap pixmap = QPixmap::grabWindow(QApplication::desktop()->winId(), x, y, 1, 1);
[ 此帖被wxyao在2011-04-15 23:25重新编辑 ]
离线roywillow

只看该作者 5楼 发表于: 2011-04-15
我做过这方面的东西
我的做法是,获得鼠标在屏幕中的位置(QCursor的某个函数)
然后用grabWindow截取QDesktopWidget,但是截取的范围设为鼠标位置1*1的大小,因为只用到一个点罢了
然后将这个QPixmap转换为QImage,获取这个唯一一点的颜色(我是用scanLine获取的)
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线wxyao

只看该作者 4楼 发表于: 2011-04-15
  1. int x = QCursor::pos().x();
  2. int y = QCursor::pos().y();
  3. QString text = QString("POS: %1, %2\n").arg(x).arg(y);
  4. unsigned long int tickCountA = (unsigned long int)GetTickCount();
  5. QPixmap pixmap = QPixmap::grabWindow(QApplication::desktop()->winId());
  6. unsigned long int tickCountB = (unsigned long int)GetTickCount();
  7. text.prepend(tr("%1ms\n").arg(tickCountB - tickCountA));
  8. if (!pixmap.isNull())
  9. {
  10. QImage image = pixmap.toImage();
  11. if (!image.isNull())
  12. {
  13.   if (image.valid(x, y))
  14.   {
  15.    QColor color = image.pixel(x, y);
  16.    text += QString("RGB: %1, %2, %3").arg(color.red()).arg(color.green()).arg(color.blue());
  17.   }
  18. }
  19. }
  20. label->setText(text);

[ 此帖被wxyao在2011-04-15 23:17重新编辑 ]
离线wxyao

只看该作者 3楼 发表于: 2011-04-14
想到一个方法,还没试,谁知道更直接更好的告诉大家啊。
我想的方法是,先全屏幕截图(qtdemo中有截图的例子),然后在去图片中相应点的RGB值。




QPixmap QPixmap::grabWidget ( QWidget * widget, int x = 0, int y = 0, int width = -1, int height = -1 ) [static]
QImage QPixmap::toImage () const
int QImage::pixelIndex ( const QPoint & position ) const
QRgb QImage::color ( int i ) const
QColor QColor::fromRgb ( QRgb rgb ) [static]
[ 此帖被wxyao在2011-04-14 23:35重新编辑 ]
离线wxyao

只看该作者 2楼 发表于: 2011-04-14
因为需要,所以顶!

如何获取屏幕上某个点的RGB值?
离线morya

只看该作者 1楼 发表于: 2007-10-30
qt4有个例子是演示如何查看屏幕上某个点的放大图像的。
不知道会不会有帮助。
快速回复
限100 字节
 
上一个 下一个