#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
void Widget::myDrawFilledRect()
{//基本绘图
QPainter painter(this);//创建QPainter对象
painter.setRenderHint(QPainter::Antialiasing);//
painter.setRenderHint(QPainter::TextAntialiasing);//
int W=this->width(); //绘图区宽度
int H=this->height(); //绘图区高度
QRect rect(W/4,H/4,W/2,H/2); //中间区域矩形框
//设置画笔
QPen pen;
pen.setWidth(3); //线宽
pen.setColor(Qt::red); //划线颜色
//Qt::NoPen,Qt::SolidLine, Qt::DashLine, Qt::DotLine,Qt::DashDotLine,Qt::DashDotDotLine,Qt::CustomDashLine
pen.setStyle(Qt::SolidLine);//线的类型,实线、虚线等
//Qt::FlatCap, Qt::SquareCap,Qt::RoundCap
pen.setCapStyle(Qt::FlatCap);//线端点样式
//Qt::MiterJoin,Qt::BevelJoin,Qt::RoundJoin,Qt::SvgMiterJoin
pen.setJoinStyle(Qt::BevelJoin);//线的连接点样式
painter.setPen(pen);
//设置画刷
// QPixmap texturePixmap(":images/images/texture.jpg");
QBrush brush;
brush.setColor(Qt::yellow); //画刷颜色
brush.setStyle(Qt::SolidPattern); //画刷填充样式
// brush.setStyle(Qt::TexturePattern); //画刷填充样式
// brush.setTexture(texturePixmap); //设置材质图片
painter.setBrush(brush);
//Qt::NoBrush,Qt::SolidPattern,Qt::Dense1Pattern,Qt::Dense2Pattern,..,Qt::Dense7Pattern,Qt::HorPattern
// Qt::VerPattern, Qt::CrossPattern, Qt::BDiagPattern,Qt::FDiagPattern,Qt::DiagCrossPattern,
// Qt::LinearGradientPattern,Qt::ConicalGradientPattern,Qt::RadialGradientPattern
// Qt::TexturePattern
//绘图
// painter.drawLine(rect.left(),rect.top(),rect.right(),rect.bottom());
painter.drawRect(rect); //只填充定义的渐变区域
// painter.drawRect(this->rect()); //填充更大区域,会有延展效果
// painter.fillRect(rect,Qt::red);
// painter.drawRoundRect(rect);
// painter.drawRoundedRect(rect,40,20);
// painter.drawEllipse(rect);
// painter.drawPolyline(points,9);
// painter.drawPolygon(points,9);
// painter.drawPoints(points,9);
// painter.translate(100,300);
// painter.drawPath(starPath);
// painter.translate(200,0);
// painter.drawPath(starPath);
// painter.translate(200,0);
// painter.drawPath(starPath);
// painter.drawArc(rect,30*16,80*16);
// painter.drawChord(rect,90*16,120*16);
// painter.drawPie(rect,90*16,120*16);
// painter.drawText(rect,"Hello, QT");
}
void Widget::myDrawTextureRect()
{
QPainter painter(this);//创建QPainter对象
painter.setRenderHint(QPainter::Antialiasing);//
painter.setRenderHint(QPainter::TextAntialiasing);//
int W=this->width(); //绘图区宽度
int H=this->height(); //绘图区高度
QRect rect(W/4,H/4,W/2,H/2); //中间区域矩形框
//设置画笔
QPen pen;
pen.setWidth(3); //线宽
pen.setColor(Qt::red); //划线颜色
//Qt::NoPen,Qt::SolidLine, Qt::DashLine, Qt::DotLine,Qt::DashDotLine,Qt::DashDotDotLine,Qt::CustomDashLine
pen.setStyle(Qt::SolidLine);//线的类型,实线、虚线等
//Qt::FlatCap, Qt::SquareCap,Qt::RoundCap
pen.setCapStyle(Qt::FlatCap);//线端点样式
//Qt::MiterJoin,Qt::BevelJoin,Qt::RoundJoin,Qt::SvgMiterJoin
pen.setJoinStyle(Qt::BevelJoin);//线的连接点样式
painter.setPen(pen);
//设置画刷
QPixmap texturePixmap(":images/images/texture.jpg");
QBrush brush;
// brush.setColor(Qt::yellow); //画刷颜色
// brush.setStyle(Qt::SolidPattern); //画刷填充样式
brush.setStyle(Qt::TexturePattern); //画刷填充样式
brush.setTexture(texturePixmap); //设置材质图片
painter.setBrush(brush);
//绘图
painter.drawRect(rect); //只填充定义的渐变区域
}
void Widget::myDrawGradient()
{
QPainter painter(this);//创建QPainter对象
painter.setRenderHint(QPainter::Antialiasing);//
painter.setRenderHint(QPainter::TextAntialiasing);//
int W=this->width(); //绘图区宽度
int H=this->height(); //绘图区高度
QRect rect(W/4,H/4,W/2,H/2); //中间区域矩形框
//设置画笔
// QPen pen;
// pen.setStyle(Qt::NoPen);//线的类型,实线、虚线等
// painter.setPen(pen);
//线性渐变
// QLinearGradient linearGrad(rect.left(),rect.top(),rect.right(),rect.bottom()); //对角线
QLinearGradient linearGrad(rect.left(),rect.top(),rect.right(),rect.top());//从左到右
linearGrad.setColorAt(0,Qt::blue);//起点颜色
linearGrad.setColorAt(0.5,Qt::green);//起点颜色
linearGrad.setColorAt(1,Qt::red);//终点颜色
linearGrad.setSpread(QGradient::ReflectSpread); //展布模式
//QGradient::PadSpread ,QGradient::RepeatSpread, QGradient::ReflectSpread
painter.setBrush(linearGrad);
//径向渐变
// QRadialGradient radialGrad(W/2,H/2,qMax(W/8,H/8),W/2,H/2);
//// radialGrad.setColorAt(0,Qt::white);
// radialGrad.setColorAt(0,Qt::green);
// radialGrad.setColorAt(1,Qt::blue);
// radialGrad.setSpread(QGradient::ReflectSpread);
// //QGradient::PadSpread ,QGradient::RepeatSpread, QGradient::ReflectSpread
// painter.setBrush(radialGrad);
//圆锥型渐变
// QConicalGradient coniGrad(W/2,H/2,45);
// coniGrad.setColorAt(0,Qt::yellow);
// coniGrad.setColorAt(0.5,Qt::blue);
// coniGrad.setColorAt(1,Qt::green);
//// coniGrad.setSpread(QGradient::PadSpread); //对于锥形渐变不起作用
// painter.setBrush(coniGrad);
//绘图
// painter.drawRect(rect); //只填充定义的渐变区域
painter.drawRect(this->rect()); //填充更大区域,会有延展效果
}
void Widget::total()
{
QPainter painter(this);//创建QPainter对象
painter.setRenderHint(QPainter::Antialiasing);//
painter.setRenderHint(QPainter::TextAntialiasing);//
int W=this->width(); //绘图区宽度
int H=this->height(); //绘图区高度
QRect rect(W/4,H/4,W/2,H/2); //中间区域矩形框
// QPoint points[9]={
// QPoint(5*W/12,H/4),
// QPoint(7*W/12,H/4),
// QPoint(3*W/4,5*H/12),
// QPoint(3*W/4,7*H/12),
// QPoint(7*W/12,3*H/4),
// QPoint(5*W/12,3*H/4),
// QPoint(W/4,7*H/12),
// QPoint(W/4,5*H/12),
// QPoint(5*W/12,H/4)
// };
// QPainterPath path;
// path.addRect(rect);
// path.addEllipse(rect);
// path.moveTo(points[0]);
// path.lineTo(points[4]);
// path.moveTo(points[1]);
// path.lineTo(points[5]);
// path.moveTo(points[2]);
// path.lineTo(points[6]);
// path.moveTo(points[3]);
// path.lineTo(points[7]);
// painter.scale(width() / 100.0, height() / 100.0);
// painter.translate(50.0, 50.0);
// qreal R=100; //半径
// const qreal Pi=3.14159;
// qreal deg=Pi*72/180;//
// QPoint points[5]={
// QPoint(R,0),
// QPoint(R*std::cos(deg),-R*std::sin(deg)),
// QPoint(R*std::cos(2*deg),-R*std::sin(2*deg)),
// QPoint(R*std::cos(3*deg),-R*std::sin(3*deg)),
// QPoint(R*std::cos(4*deg),-R*std::sin(4*deg)),
// };
// QPainterPath starPath;
// starPath.moveTo(points[0]);
// starPath.lineTo(points[2]);
// starPath.lineTo(points[4]);
// starPath.lineTo(points[1]);
// starPath.lineTo(points[3]);
// starPath.closeSubpath();
//绘制曲线
// path.moveTo(points[0]);
// path.cubicTo(points[1],points[4],points[2]);
//设置字体
// QFont font;
// font.setPointSize(30);
// font.setBold(true);
// painter.setFont(font);
//设置画笔
QPen pen;
pen.setWidth(3); //线宽
pen.setColor(Qt::red); //划线颜色
//Qt::NoPen,Qt::SolidLine, Qt::DashLine, Qt::DotLine,Qt::DashDotLine,Qt::DashDotDotLine,Qt::CustomDashLine
pen.setStyle(Qt::SolidLine);//线的类型,实线、虚
QT QPainter基本绘图应用程序示例
91 浏览量
2024-01-24
09:54:11
上传
评论
收藏 1.6MB RAR 举报
冷凝女子
- 粉丝: 499
- 资源: 67
最新资源
- 基于matlab开发的全面详解LTE:MATLAB建模、仿真与实现-simulink.rar
- 自动驾驶定位系列教程二:系统架构.pdf
- 整站程序8优技巧网-8ujq.rar
- 世界各个国家或地区国际域名缩写
- 基于matlab开发的根据rvm回归模型自己编的matlab程序.rar
- 基于matlab开发的该程序为国内一所大学编写的LTE链路层仿真程序,根据LTE标准协议编写的,很容易看懂.rar
- 高效C++学生成绩管理系统:教育技术+C++17编程+数据管理+教务自动化
- 搜索链接要广告分类系统 v2.0-yad20.rar
- 基于matlab开发的Tipping的相关向量机RVM的回归MATLAB程序,有英文注释,可以运行.rar
- 一个点击正反转程序实例,可实现案件电机正反转
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈