【问题标题】:Qt convert data to QPixmapQt 将数据转换为 QPixmap
【发布时间】:2014-11-26 16:44:44
【问题描述】:

我正在尝试将一些数据从 QVector 转换为 QBitmap。我怎样才能做到这一点? 我有一个 QPointF 的 QVector,我正在尝试将该数据转换为在 QPixmap 上重绘。

QVector<QPointF> data;
QPixmap pixMap;

编辑

我做了这样的东西。为什么它不起作用?

QPainter *painter = new QPainter(&pixMap);
for(int i = 1; i < data.last().x(); i++){
  painter->setPen(QPen(Qt::black, 2));
  painter->drawPolyline(this->data.data(), this->data.size());
}
  delete painter;
  setPixmap(pixMap);

【问题讨论】:

  • 你需要在像素图上画点吗?
  • 是的 :) 抱歉解释不准确
  • @Shepherd 你看过QPainter吗?
  • 什么是“this-&gt;data.data()”和“this-&gt;data.size()”。什么是“data.last.x()”?
  • 你已经知道什么是数据了。通常 data() 函数从 Vector 中获取所有 QPOINTF,这样我就可以在 WIDGET 上重新绘制。但是当我在 QPixMap 上做的时候,什么都没有。

标签: c++ qt qpixmap qvector


【解决方案1】:

您可以使用QPainter 绘制像素图:

QPixmap pixmap(100,100);   // a pixmap of size 100x100 pixels
QPainter painter(&pixmap);

// iterate over your points and draw them using the painter

QPainter 文档有大量关于如何使用 QPainter、画笔、钢笔绘制东西的示例...

【讨论】:

  • 对不起,这不是一个好问题 - 什么不起作用?怎么没用?编译器说了什么?
  • 请注意,在 QPainter 对象被销毁之前,不能保证 QPixmap 状态会完全更新。保证这一点的最简单方法是将 QPainter(以及调用它的绘图命令)放在一组花括号内,并在该范围之外声明 QPixmap,并且在结束之前不要尝试将 QPixmap 用于任何事情范围(即在大括号之后)
猜你喜欢
  • 2018-04-28
  • 1970-01-01
  • 2013-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-01
相关资源
最近更新 更多