QPainter学习
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,将圆或椭圆放在矩形正中间,如果矩形是正方形则画的是圆,否则是椭圆
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);// 使用字体
长风破浪会有时,直挂云帆济沧海!
可通过下方链接找到博主
https://www.cnblogs.com/judes/p/10875138.html