【问题标题】:qpixmap qclipboard and save image invertedqpixmap qclipboard 并保存图像倒置
【发布时间】:2018-03-24 13:18:38
【问题描述】:

环境:

Qt 4.7,Mac OS X 10.12.6

问题:

当我保存图像,或将其放在剪贴板中,然后从使用 Qt 4.7 构建的应用程序将其粘贴到 OS X 10.12.6 下时,生成的图像会垂直反转。我正在使用native 图形模式,因为 OS X 10.12 破坏了 raster 模式的 Qt 4.7 工具提示;从 10.6.8 到 10.11,保存和复制到剪贴板功能多年来一直正常工作,所以在那些 OS X 版本中,我使用raster。在这种情况下,剪贴板图像(和保存的图像)不会反转。

这是我复制到剪贴板的操作:

QPixmap pm = QPixmap::grabWindow(uiframePlot->winId());
clipboard->setPixmap( pm, QClipboard::Clipboard);
QApplication::processEvents();

这是我为保存图像所做的:

QString qs = QDir::homePath() + scappath;
QPixmap pm = QPixmap::grabWindow(uiframePlot->winId());
pm.save(qs);

我试图找到一个“翻转像素图”功能,但没有成功。我的 Google-fu 可能在这里有所欠缺。我用“Qt 4.7”寻找“反转”、“翻转”和“变换”

任何人都可以为像素图提供指向基于 Qt 的本机(即 Qt 类的标准部分)“翻转”函数的指针吗?还是我需要写一个?

【问题讨论】:

  • 你可能对 QImage::mirrored() 函数感兴趣,它可以水平或垂直翻转图像。不幸的是,没有 QPixmap 版本,但是使用 QPixmap::toImage() 可以很容易地将 QPixmaps 转换为 QImages

标签: c++ qt qpixmap


【解决方案1】:

这是一个似乎可行的答案:

QPixmap pm = QPixmap::grabWindow(tmw->ui->frameScope->winId());
if (imageinvert)
{
    QPixmap pmf = pm.transformed(QTransform().scale(1, -1));
    clipboard->setPixmap( pmf, QClipboard::Clipboard);
}
else
{
    clipboard->setPixmap( pm, QClipboard::Clipboard);
}
QApplication::processEvents();

【讨论】:

    猜你喜欢
    • 2017-05-17
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多