QPainter学习

摘要:
0为起始角度,500为扇形所展开的角度。

1、获取painter

QPainter painter(this);

2、设置抗锯齿

 painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);

3、画圆弧

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

 QPainter painter(this);
 painter.drawArc(rectangle, startAngle, spanAngle);

rectangle是绘制的区域;

startAngle 、spanAngle是开始角度和结束角度,注意乘16,画圆就是360x16=5760

4、设置画笔

painter.setPen(QPen(Qt::blue,4,Qt::DashLine));//设置画笔形式 

5、设置画刷

painter.setBrush(QBrush(Qt::red,Qt::SolidPattern));//设置画刷形式
QRadialGradient radialGradient(0, 0, radius, 0, 0);
radialGradient.setColorAt(0.50, Qt::transparent);
radialGradient.setColorAt(0.60, color);
radialGradient.setColorAt(0.67, m_shadowColor);
radialGradient.setColorAt(0.69, m_bgColor);
radialGradient.setColorAt(0.89, m_bgColor);
radialGradient.setColorAt(0.90, m_shadowColor);
radialGradient.setColorAt(0.95, color);
radialGradient.setColorAt(1, Qt::transparent);
painter.setBrush(radialGradient);

6、画矩形

painter.drawRect(20,20,160,160);

7、画圆和椭圆

先假想一个矩形rect,将圆或椭圆放在矩形正中间,如果矩形是正方形则画的是圆,否则是椭圆

QPainter学习第1张

painter.drawEllipse(20,20,210,160);

4个参数是矩形的左上角坐标x、y,矩形的宽度、长度

8、画圆角矩形

painter.drawRoundRect(20,20,210,160,50,50);

最后两个参数决定角的圆度,它可以为0到99之间的任意值(99代表最圆)

9、画扇形图

painter.drawPie(20,20,210,160,0,500);

前四个参数定义圆(与drawEllipse()函数相同),后两个参数定义圆的样式。0为起始角度(实际单位为1/16度),500为扇形所展开的角度(单位也为1/16度)。
10、绘制弦

painter.drawChord(20,20,210,160,500,1000);

11、绘制圆弧

painter.drawArc(20,20,210,160,500,1000);

12、绘制贝塞尔曲线

painter.drawQuadBezier(QPointArray(QRect(20,20,210,160)));

13、绘制文字

QRectF textRect(-radius, -radius, radius * 2, radius * 2);
painter.drawText(textRect, Qt::AlignCenter,"hello");

14、保存和恢复

painter.save()用于保存当前状态,painter.restore()用于恢复save之前所有状态,如下:

painter.setxxx1();
painter.setxxx11();
painter.save();
//此时painter为状态1
painter.setxxx2();
painter.setxxx22();
//此时painter为状态2
painter.restore();//恢复到save之前的状态1

15、设置字体

QFont font;
font.setFamily("Microsoft YaHei");
font.setPointSize(16);//大小
font.setItalic(true);//斜体
font.setUnderline(true);//设置下划线
font.setOverline(true); //设置上划线
font.setCapitalization(QFont::SmallCaps);//设置字母大小写
font.setLetterSpacing(QFont::AbsoluteSpacing, 20);//设置字符间距
painter.setFont(font);//使用字体

免责声明:文章转载自《QPainter学习》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Markdown温故知新(3):六个实用扩展语法oracle报错解决下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

itext7 在已经存在的pdf文件中添加文本

引包:itext7全局桶: <dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.1.8</version><type>pom</...

Markdown使用总结

最近自己慢慢学写博客,得知markdown方便快捷,特此记录,方便日后查看 该语法位有道云笔记markdown语法,各别语法在此不兼容 博客园markdown语法请参考https://www.cnblogs.com/qiaogaojian/p/6132433.html 目录 Markdown介绍 常用语法 生成目录 标题 字体 引用 分割线 列表...

前端开发知识之前端移动端适配总结

meta标签到底做了什么事情做过移动端适配的小伙伴一定有遇到过这行代码: <meta name="viewport" content="width=device-width, initial-scale=1.0"> 但是,很多小伙伴只是感性的认识:噢,我加了这行代码,然后页面的宽度就会跟我的设备宽度一致。然而,这种理解是很片面的。那么,这句话的...

使用swiper.js实现移动端tab切换

在项目中遇到的,要实现tab切换,我用的是swiper.js 官网:http://www.swiper.com.cn/api/start/new.html 1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta charset="UTF-...

如何使用asp.net导出PDF文件

PDF简介:PDF(Portable Document Format)文件格式是Adobe公司开发的电子文件格式。这种文件格式与操作系统平台无关,也就是说,PDF文件不管是在Windows,Unix还是在苹果公司的Mac OS操作系统中都是通用的。这一特点使它成为在Internet上进行电子文档发行和数字化信息传播的理想文档格式。越来越多的电子图书、产品说...

c#写word文档基础操作(自己控制样式)

下面一个函数,建立一个Word 文档,添加页眉、页脚,在内容中两个不同字体的Hello!!!   来自 <http://bbs.csdn.net/topics/340041961> public void myFunction() { Word.ApplicationClass oWordApp = new Word.Application...