Qt 使用QPainter绘图问题 20C

我在mainwindow里定义了成员函数drawArc,用来画一个镂空的扇形

void drawArc(QLabel *label,QPixmap pixmap, QPainter *painter, QColor color, qreal startangle , qreal spanangle )
    {
    //---------------------------------------------------------------------------------------
    QPixmap tempPixmap = pixmap;                                // 定义画布
    painter->begin(&tempPixmap);
    painter->setRenderHint(QPainter::Antialiasing,true);
    painter->setPen(Qt::NoPen);                                 // 没有轮廓
    //----------------------------------------------------------------------------------------
    QRectF rect(0,0,pixmap.width(),pixmap.width());      //用来画扇形的正方形
    painter->setBrush(color);                                   // 设置颜色
    int width = pixmap.width()/6;
    //int height = rect->height()/6;
    QPainterPath path;

    path.arcTo(rect, startangle, spanangle);
    QPainterPath subPath;
    subPath.addEllipse(rect.adjusted(width, width, -width, -width));

    painter->drawPath(path - subPath);
    painter->end();
    label->setPixmap(tempPixmap);
}

调用是这样写的:
drawArc(callerLabel,pixmap,&painter,color[0],0,180);

图片说明

最后结果出来确实这样的,求问高手!!!急!!!

2个回答

QRectF rectangle(10.0, 20.0, 80.0, 60.0);
int startAngle = 30 * 16;
int spanAngle = 120 * 16;

QPainter painter(this);
painter.drawPie(rectangle, startAngle, spanAngle);
如果要做一个镂空的扇形就要画两个扇形一大一小的就可以了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
qt中qpainter绘图效率问题?

qt中qpainter绘图是不是效率很低,其他绘图方式有哪些,哪个效率效率比较高点呢?

QT Qpainter.drawImage参数到底怎么用

drawImage(0,0,grayImg,0,0,0,0,Qt::AutoColor)我要崩溃了,这最后一个参数,到底填什么?文档看了之后,还是填不对啊,试了很多,都不对

QT中有没有什么办法让QPainter绘制的文字可选?

目前用QT做一个类似聊天软件的项目,聊天气泡用QListView展示,在QAbstractItemDelegate代理中实现自己的绘制方法,但我想要让绘制的文本可以选择,前提是不使用QLabel等控件,而是只能使用绘制的方法来完成,因为其中涉及到更多复杂的绘图。所以有没有大神知道怎么实现,目前我想到可能可以用QStylePainter来绘制控件,但不知道如何写代码实现。

MFC CDC如何转换为QT中的qpaintdevice

本人做地图上做绘制文字,但是做地图只提供了 cdc绘图,而现在要用qt开发,如何转换求解!

Qt 如何清除在窗口上已画的图形

首先我将主窗口设置为透明: ``` MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); setWindowOpacity(1); setWindowFlags(Qt::FramelessWindowHint); setAttribute(Qt::WA_TranslucentBackground); .... ``` 然后我希望在主窗口上画各种图形(直线,圆等),检测鼠标左键按下,记录第一个点位置,然后鼠标移动时可以从第一个点的位置画一条到当前位置的直线,大致代码如下: ``` void MainWindow::mousePressEvent(QMouseEvent *e) { if (e->button() == Qt::LeftButton) { firstPnt = e->pos(); } } void MainWindow::mouseMoveEvent(QMouseEvent *e) { QPoint pnt = e->pos(); curPnt.setX(e->x()); curPnt.setY(e->y()); this->repaint(0, 0, 1920, 1080); } ``` 我的主窗口是1920*1080,调用repaint后会执行paintEvent: ``` void MainWindow::paintEvent(QPaintEvent *e) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing, true); painter.setPen(QPen(Qt::black, 4, Qt::SolidLine, Qt::RoundCap)); painter.drawLine(firstPnt.x(), firstPnt.y(), curPnt.x(), curPnt.y()); } ``` 但是repaint并没有把原先的图形清除掉,而且鼠标移动画图过程非常卡顿,有什么好的方法么,我才接触QT不到一星期,大佬帮帮忙。

Qt绘图怎么不在自己创建的绘图类里取得painter绘图

Qt绘图,网上查找了下都是要创建绘图类,然后在类里面绘图,现在我想在 [网上类似的Qt绘图](https://blog.csdn.net/hao_zong_yin/article/details/73252571 "")别的类里面调用qt绘图函数,绘图中的一些尺寸大小等数据都是要从这个函数调用,所以需要在这个函数里面怎么使用呀

qt5绘图中渐变效果的使用

使用渐变效果之前画出来的图是正常的![图片说明](https://img-ask.csdn.net/upload/201904/14/1555211282_226347.jpg)添加渐变效果之后图片少了一块![图片说明](https://img-ask.csdn.net/upload/201904/14/1555211329_951533.jpg)但是我加了复合模式后效果也是正常的,这是为什么呢![图片说明](https://img-ask.csdn.net/upload/201904/14/1555211485_47905.jpg) 代码如下: QPen pen; pen.setWidth(1); pen.setStyle(Qt::SolidLine); pen.setColor(Qt::red); painter.setPen(pen); //设置渐变效果 QLinearGradient linearGrad(0,0,100,0); linearGrad.setColorAt(0,Qt::yellow); linearGrad.setColorAt(0.5,Qt::green); linearGrad.setColorAt(1,Qt::blue); linearGrad.setSpread(QGradient::PadSpread); painter.setBrush(linearGrad); painter.setCompositionMode(QPainter::CompositionMode_Difference); for(int i=0;i<36;i++){ painter.drawEllipse(QPoint(50,0),50,50); painter.rotate(10); }

因特殊限制,利用QWidget的函数getDC()返回的hdc绘图,只闪一次就被覆盖,

因条件限制:使用第三方动态库底层绘制地图图像,该库使用windows的GDI调用进行绘制,需要给该库提供一个hdc作为输出结果。 我在paintEvent函数中执行QWidget的getDc()函数可以返回该Widget的hdc,传递给动态库绘图后,界面只闪一下绘制图像就变成空白,请问如何让返回的hdc结果正确在QWidget上显示?? 代码如下: void myWidget::paintEvent(QPaintEvent * event) { HDC hdc = this->getDC(); thirdLibrary.outPut(hdc);//注解如下 /*该函数主要调用windows GDI将地图绘制在 传递进去的hdc中,并提供给我调用,可将该函数理解为 void output(HDC hdc) { TextOut(hdc,0,0,"地图",2); ...等等类似windows GDI函数 } */ this->releaseDC(); } 库将地图绘制到hdc上之后,Qt显示的地图只有一下,一闪就没了,变成空白显示了,请问如何解决?

QT 绘图完成后UI界面卡顿,无响应

刚接触qt,用UI在主线程中绘图,绘图过程没卡死,绘图完成不能动UI,移动会卡死。 求解决方法

QT的界面,底层是不是用OpenGL画出来的?

1、QT的各种界面是不是用OpenGL画出来的?然后在处理控件响应? 2、QT开发任何程序都不用操作系统API吗?只用QT就能开发任何程序? 3、如果第二种不满足,那哪类程序需调用API?

qt 在一张白色png图片底板上绘图,出现锯齿,如何消除锯齿

QPainter painter(&m_bitMap); //painer.setRenderHint(QPainter::Antialiasing,true); painer.setRenderHint(QPainter::SmoothPixmapTransform,true); painter.setPen(QPen(QColor(255,0,0,255),cur_point.width)); 我按照上面的方法设置完画笔后,画出的图形仍然有锯齿![图片说明](https://img-ask.csdn.net/upload/201807/27/1532673203_586104.png)

关于QT点击按钮实现画图的问题

想实现点击一个QPushButton,然后绘出一条直线,再点一次,在原来那条直线的 基础上,在下面一点点的位置再绘出一条直线。用来演示一步步绘图的步骤 。 刚刚学 2 个月,基础不太好,感谢大佬给出方法!

qt控件绘图问题!急急急!!!!

我想做一个航行系统,里面有2个的tab页,我想让一个tab页里面显示航行数据(比如水速等等),一个tab页把船航行的数据以航行图的形式展示出来。我试着画图 QPainter painter(this); QPoint beginPoint; QPoint endPoint; painter.setPen( QPen(Qt::black,3,Qt::SolidLine,Qt::RoundCap,Qt::MiterJoin) ); for( int i=0; i<399; i++ ) { beginPoint.setX( 2*i ); beginPoint.setY( buffer[i] +200); endPoint.setX( 2*i+1 ); endPoint.setY( buffer[i+1]+200 ); painter.drawLine( beginPoint, endPoint ); }。 这样画出来的图形就话显示在主窗口上,tab页下面。我想问,qt中有没有什么办法或者说什么控件可以让我在tab页的指定位置绘图的。在mfc中这个是可以的。新手,非常非常感谢各位,已经好多天了到处都搜了,解决不了这个问题

QT重叠画布QPixmap透明问题,如何显示下层

楼主在写一个类似红烛教鞭的demo,要求效果是上层画布透明可以进行涂鸦,下层文档可以正常输入,目前主要问题是重叠以后,即使上层设置fill(Qt::transparent),最后还是会遮挡住文档,找了半天找不到能让画布完全透明,显示下层的函数,特来求助。

Qt 关于调用父类的paintEvent问题

我用paintEvent在一个widget里面画图,我将widget提升为一个类,在类的构造函数里面 添加两行代码: this->setFrameShape(QFrame:Winpanel); this->setFrameShadow(QFrame:Sunken); 开始没有声明paintEvent()函数时候,可以看到边框效果,但是定义了paintEvent()函数 之后,就没有效果了,后来查了一下 ,发现paintEvent()是虚函数,我自己定义的paintEvent() 会覆盖父类的paintEvent();然后我在自己定义的paintEvent里面调用了父类的paintEvent() 之后就好了,但是我不知道为什么,我继承的父类是QFrame,但是这是为什么呢?父类的paintEvent()有什么用?

QT中用QTimer定时器刷新paint的问题

写一个绘图的函数,需要让这个图形转动起来,用的QGraphicsItem作为图形项来绘制 需要每隔一段时间让图形刷新一次,不知道怎么应用QTimer #include "myitem3.h" #include <QPainter> #include <QtMath> #include <QTimer> #include <QObject> #define PI 3.1415 MyItem3::MyItem3() { } QRectF MyItem3::boundingRect() const { qreal penWidth = 1; return QRectF(-100-penWidth/2,-100-penWidth/2,100+penWidth,100+penWidth); } void MyItem3::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { QPen pen; pen.setWidth(2); int i; for(i=0;i<25;i++) { pen.setColor(QColor(255,255,255,i*5)); painter->setPen(pen); painter->drawLine(0,0,100*qCos((angle+i)/360*PI),100*qSin((angle+i)/360*PI)); } angle+=10; } 这个是绘图的CPP文件,尝试过在MyItem3::MyItem3()里面建立connect函数,但是不知道发送者是谁,使用this也不对

关于Qt QPainterPath绘图路径删除路径内某个元素的方法

如代码所示: QPainterPath Path; Path.lineTo(MoveMouse.pos()); 此时路径内已有多个线段元素,一个元素为一个线段,画出来是涂鸦样式。 现在想实现橡皮擦的功能; 为橡皮擦操作时,我MouseMove.pos()在路径内,我就把某个元素删除,从而实现橡皮擦功能,该怎么做,QPainterPath貌似没有直接删除元素的方法

Qt中如何解决滚动时闪烁问题

我编写了个绘图应用,拖动滚动条时,需要滚动所绘制内容,我如下实现: widget->scroll(dx, 0); ........... //绘制暴露出来的内容到一个pixmap上 painter->drawPixmap() 但是发现滚动时,调用scroll后,屏幕绘制内容滚动了,但是暴露的还未画完,造成滚动时闪烁 但是我看qtextedit器件滚动时也没有闪烁啊,请教高手如何解决

Qt中PaintWidget在MainWindow下不能绘制

main.cpp ``` #include "mainwindow.h" #include <QApplication> #include "paintwidget.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); w.showchild(); return a.exec(); } ``` mainwindow.cpp ``` #include "mainwindow.h" #include "ui_mainwindow.h" #include "paintwidget.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { resize(800,600); } void MainWindow::showchild(){ PaintWidget widget(this); widget.show(); } MainWindow::~MainWindow() { delete ui; } ``` paintwidget.cpp ``` #include "paintwidget.h" #include <Qpainter> #include "qpainter.h" PaintWidget::PaintWidget(QWidget *parent) : QWidget(parent) { resize(800,600); setWindowTitle(tr("paint demo")); } void PaintWidget::paintEvent(QPaintEvent *){ QPainter painter(this); painter.drawLine(80,100,650,500); painter.setPen(Qt::red); painter.drawRect(10,10,100,400); painter.setPen(QPen(Qt::green,5)); painter.setBrush(Qt::blue); painter.drawEllipse(50,150,400,200); } ``` 没有报错,但是什么也没绘制出来。

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

Linux 会成为主流桌面操作系统吗?

整理 |屠敏出品 | CSDN(ID:CSDNnews)2020 年 1 月 14 日,微软正式停止了 Windows 7 系统的扩展支持,这意味着服役十年的 Windows 7,属于...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

学习总结之HTML5剑指前端(建议收藏,图文并茂)

前言学习《HTML5与CSS3权威指南》这本书很不错,学完之后我颇有感触,觉得web的世界开明了许多。这本书是需要有一定基础的web前端开发工程师。这本书主要学习HTML5和css3,看...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

新一代神器STM32CubeMonitor介绍、下载、安装和使用教程

关注、星标公众号,不错过精彩内容作者:黄工公众号:strongerHuang最近ST官网悄悄新上线了一款比较强大的工具:STM32CubeMonitor V1.0.0。经过我研究和使用之...

记一次腾讯面试,我挂在了最熟悉不过的队列上……

腾讯后台面试,面试官问:如何自己实现队列?

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

冒泡排序动画(基于python pygame实现)

本项目效果初始截图如下 动画见本人b站投稿:https://www.bilibili.com/video/av95491382 本项目对应github地址:https://github.com/BigShuang python版本:3.6,pygame版本:1.9.3。(python版本一致应该就没什么问题) 样例gif如下 ======================= 大爽歌作,mad

Redis核心原理与应用实践

Redis核心原理与应用实践 在很多场景下都会使用Redis,但是到了深层次的时候就了解的不是那么深刻,以至于在面试的时候经常会遇到卡壳的现象,学习知识要做到系统和深入,不要把Redis想象的过于复杂,和Mysql一样,是个读取数据的软件。 有一个理解是Redis是key value缓存服务器,更多的优点在于对value的操作更加丰富。 安装 yum install redis #yum安装 b...

现代的 “Hello, World”,可不仅仅是几行代码而已

作者 |Charles R. Martin译者 | 弯月,责编 | 夕颜头图 |付费下载自视觉中国出品 | CSDN(ID:CSDNnews)新手...

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

!大部分程序员只会写3年代码

如果世界上都是这种不思进取的软件公司,那别说大部分程序员只会写 3 年代码,恐怕就没有程序员这种职业。

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

HTTP与HTTPS的区别

面试官问HTTP与HTTPS的区别,我这样回答让他竖起大拇指!

程序员毕业去大公司好还是小公司好?

虽然大公司并不是人人都能进,但我仍建议还未毕业的同学,尽力地通过校招向大公司挤,但凡挤进去,你这一生会容易很多。 大公司哪里好?没能进大公司怎么办?答案都在这里了,记得帮我点赞哦。 目录: 技术氛围 内部晋升与跳槽 啥也没学会,公司倒闭了? 不同的人脉圈,注定会有不同的结果 没能去大厂怎么办? 一、技术氛围 纵观整个程序员技术领域,哪个在行业有所名气的大牛,不是在大厂? 而且众所...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

立即提问
相关内容推荐