画笔工具,图形渐变,图片加载,字体变换

1 篇文章 0 订阅
1 篇文章 0 订阅

QPainter painter(this); 
painter.drawLine(0,0,100,100);//画线

QPen pen; //画笔 
pen.setColor(QColor(255,0,0)); 
QBrush brush(QColor(0,255,0,125)); //画刷 
brush.setStyle(Qt::HorPattern);//设置画刷填充风格
painter.setPen(pen); //添加画笔 
painter.setBrush(brush); //添加画刷 
painter.drawRect(100,100,200,200); //绘制矩形

//矩形渐变
QLinearGradient linearGradient(100,150,300,150); //从点(100,150)开始到点(300,150)结束,确定一条直线 
linearGradient.setColorAt(0,Qt::red); 
linearGradient.setColorAt(0.2,Qt::black); 
linearGradient.setColorAt(0.4,Qt::yellow); 
linearGradient.setColorAt(0.6,Qt::white); 
linearGradient.setColorAt(0.8,Qt::green); 
linearGradient.setColorAt(1,Qt::blue); //将直线开始点设为0,终点设为1,然后分段设置颜色 
painter.setBrush(linearGradient); 
painter.drawRect(100,100,200,100); //绘制矩形,线性渐变线正好在矩形的水平中心线上

//圆形渐变
QRadialGradient radialGradient(200,100,100,200,100); //其中参数分别为圆形渐变的圆心(200,100),半径100,和焦点(200,100) //这里让焦点和圆心重合,从而形成从圆心向外渐变的效果 
radialGradient.setColorAt(0,Qt::black); 
radialGradient.setColorAt(1,Qt::yellow); //渐变从焦点向整个圆进行,焦点为起始点0,圆的边界为1 
QPainter painter(this);
painter.setBrush(radialGradient); 
painter.drawEllipse(100,0,200,200); //绘制圆,让它正好和上面的圆形渐变的圆重合

//圆锥渐变 
QConicalGradient conicalGradient(50,50,0); //圆心为(50,50),开始角度为0 
conicalGradient.setColorAt(0,Qt::green);
conicalGradient.setColorAt(1,Qt::white); //从圆心的0度角开始逆时针填充 
QPainter painter(this); 
painter.setBrush(conicalGradient); 
painter.drawEllipse(0,0,100,100);

QFont font(“Arial”,20,QFont::Bold,true); //设置字体的类型,大小,加粗,斜体 
font.setUnderline(true); //设置下划线 
font.setOverline(true); //设置上划线 
font.setCapitalization(QFont::SmallCaps); //设置大小写 
font.setLetterSpacing(QFont::AbsoluteSpacing,5); //设置间距 
QPainter painter(this); 
painter.setFont(font); //添加字体 
QRectF ff(100,100,300,200); //画长方形
painter.drawRect(ff); 
painter.setPen(QColor(Qt::red));
painter.drawText(ff,Qt::AlignCenter,"yafeilinux");//写字

QPainterPath path; //QPainterPath类
path.addEllipse(100,100,50,50); //添加椭圆
path.lineTo(200,200); //添加直线
path.translate(100,0);//转换坐标原点
QPainter painter(this); 
painter.setPen(Qt::green); 
painter.setBrush(Qt::yellow); 
painter.drawPath(path);

QPainterPath path;
path.addRect(50,50,40,40); //添加矩形
path.moveTo(100,100); //移动当前点位置
path.lineTo(200,200);//绘制直线

QPainter painter(this); 
QPixmap pix; //QPixmap类
pix.load("images/linux.jpg");//加载图片
painter.drawPixmap(0,0,100,100,pix); //绘制图片
painter.translate(100,100); //将(100,100)设为坐标原点 
painter.drawPixmap(0,0,100,100,pix);//绘制第二张图片
 
 pix = pix.scaled(width*2,height*2,Qt::KeepAspectRatio); 
//将图片的宽和高都扩大两倍,并且在给定的矩形内保持宽高的比值
 
 //旋转图片
 QPainter painter(this); 
 QPixmap pix; 
 pix.load("images/linux.jpg"); 
 painter.translate(50,50); //让图片的中心作为旋转的中心 
 painter.rotate(90); //顺时针旋转90度 
 painter.translate(-50,-50); //使原点复原 
 painter.drawPixmap(0,0,100,100,pix);
 
 QPainter painter(this); 
 QPixmap pix; 
 pix.load("images/linux.jpg"); //加载图片
 painter.drawPixmap(0,0,100,100,pix); //绘制图片
 painter.shear(0.5,0); //横向扭曲 
 painter.drawPixmap(100,0,100,100,pix);//绘制扭曲后的图片
 
 painter.shear(0,0.5); //纵向扭曲 
 painter.shear(0.5,0); //横纵扭曲
 
 translate()//平移变换;
 scale()//比例变换;
 rotate()//旋转变换;
 shear()//进行扭曲变换。
 
 
 QPainter painter(this); 
 painter.save(); //保存坐标系状态 
 painter.translate(100,100); 
 painter.drawLine(0,0,50,50); 
 painter.restore(); //恢复以前的坐标系状态 
 painter.drawLine(0,0,50,50);
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值