QPainter的使用

1. 划线

void QPainter::drawLine(int x1, int y1, int x2, int y2)

2. 设置颜色

void QPainter::setPen(const QColor &color);
QColor(int r, int g, int b, int a = 255);

3. 设置坐标

QPainter _selfPaint;
_selfPaint.translate(400,300);  //设置坐标转化,设置400,300为_ildPaint的0点坐标;
_selfPaint.scale(300.0/32767, 300.0/32767); // 设置坐标放大倍数,当前的32767相当于原来的300;长度粗细都放大

4. 使用过程遇到的小问题

参考:https://blog.csdn.net/qq21497936/article/details/105506028
如果是直接调用QPainter则只能在paintEvent(QPaintEvent *)中使用。因此大部分使用QPainter的场景都是在paintEvent中。
但目前我希望不在这个函数里面调用,因为当前的需求是需要画完一个图形就显示出来。具体实现方法如下:
声明一个QLabel,然后声明一个QPixmap并且将这个label作为pixmap的参数传入;然后再把pixmap传入QPainter对象中,接下来使用Qpainter对象画的图形在执行完后就画显示在界面的label中。
目前试了其它wedgit都无法实现画图效果,只有QLabel。因为wedgit都带有paintEvent;
另一个需要注意的是,调用QPainter画完图形并不会立刻显示,要等函数推出才显示;这可能也是调用了QLabel控件的PaintEven事件吧。目前没深究。
参考代码如下:

    qDebug() << "开始播放";
	QLabel *painterLabel = new QLabel(600,600);

    int XZero = 0, YZero = 0;

    QPainter _selfPaint(&pixmap);
    _selfPaint.save();
    _selfPaint.setPen(QPen(QColor(0,100,200),2));
    _selfPaint.drawLine(XZero,YZero,300,300);
    _selfPaint.restore();

    painterLabel->setPixmap(pixmap);

    QThread::usleep(1000000);
    qDebug() << "停止播放";
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值