【问题标题】:Get QImage pixel coordinates获取QImage像素坐标
【发布时间】:2018-06-22 10:29:12
【问题描述】:

我目前使用以下代码将 QImage 绘制到 QWidget:

QPainter c(this);
const QRect& cw = c.window();

c.setRenderHint(QPainter::SmoothPixmapTransform, cw.width() < scale);
c.drawImage(cw, image);

现在的问题是图像已正确缩放以适合 QWidget,我想根据 QWidget 坐标获取 QImage 上的像素坐标。如果不进行缩放,这将是相当微不足道的,因为小部件像素直接对应于 QImage 坐标。最终,一种在缩放时转换 QWidget 上的哪个像素对应于 QImage 中的像素的方法是理想的。非常感谢任何建议!

【问题讨论】:

  • 您将永远无法恢复确切的像素,因为当您缩放像素时,像素会相乘或相除,也就是说,可以复制或消除一个像素。你可以得到一个与 rgb 值非常相似的像素。
  • 什么是scale
  • scale 仅用于检查实际宽度是否小于小部件宽度。所以换句话说,它只是 QImage 的宽度。
  • 你想要的是在原始QImage中获得一个近似像素? ——
  • @eyllanesc 是的,我只想知道哪一个大致对应于 QImage。我可能只会使用 1x、2x、3x 比例来避免问题,但我想知道是否有比显而易见的解决方案更好的解决方案。

标签: c++ qt qwidget qimage


【解决方案1】:

您实施的是升级,要恢复坐标,我们可以使用QTransform,如下所示:

QTransform tr;
tr.scale(image.width()*1.0/cw.width(), image.height()*1.0/cw.height());
QPoint imagePoint = tr.map(widgetPoint);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    相关资源
    最近更新 更多