Qpen设置画笔
//************ QPen 使 用 ************************************************************
QPen用于绘图时对线条进行设置,主要包括线宽,颜色,线型等,
//函数原型
void setColor(QColor &color) //设置画笔颜色,即线条颜色。
void setWidth(int width) //设置线条宽度
void setStyle(Qt::PenStyle style) //设置线条样式
{
Qt::PenStyle是一种枚举类型,以下是各种枚举。
Qt::SolidLine;
Qt::DashLine;
Qt::DotLine;
Qt::DashDotLine;
Qt::DashDotDotLine;
Qt::CustomDashLine;
}
void setCapStyle(Qt::PenCapStyle style) //设置线条端点样式
{
Qt::PenCapStyle是一种枚举类型
Qt::SquareCap;
Qt::FlatCap;
Qt::RoundCap;
}
void setJoinStyle(Qt::PenJoinStyle style); //设置连接样式
{
Qt::PenJoinStyle是一个枚举类型
Qt::BevelJoin;
Qt::MiterJoin;
Qt::RoundJoin;
}
QBrush画刷
//********************************* QBrush 使 用 **************************************
QBrush定义了QPainter绘图时的填充特性,包括填充颜色,填充样式,
//函数原型
void setColorr(QColor &color); //设置画刷颜色
void setStyle(Qt::BrushStyle style); //设置画刷样式
{
Qt::BrushStyle是一种枚举类型
Qt::NoBrush; //不填充
Qt::SolidPattern //单一颜色填充
Qt::HorPattern //水平线填充
Qt::VerPattern //垂直线填充
}
void setTexture(QPixmap &pixmap); //设置一个QPixmap类型的图片作为画刷图片
void setTextureImage(QImage &image); //设置一个QImage类型的图片作为画刷图片
抗锯齿
//***************** 抗锯齿 ***********************************************************
painter.setRenderHint(QPainter::Antialiasing);
painter.setRenderHint(QPainter::TextAntialiasing);
渐变填充
/************************ 渐 变 填 充 *********************************************************
QLinearGradient: 线性渐变:指定一个起点和颜色,指定一个终点和颜色
QRadialGradient: 简单辐射渐变和扩展辐射渐变
QConicalGradient: 圆锥形渐变
//线性渐变:
QLinearGradient linearGra(QPointF(10,20) , QPointF(90,80));
linearGra.setColorAt(0 , Qt::yellow);
linearGra.setColorAt(0.5 , Qt::blue);
linearGra.setColorAt(1 , Qt::yellow);
painter.setBrush(linearGra);
//辐射渐变
QRadialGradient
//锥形渐变
QConicalGradient
绘制图形
/************************** 绘 制 图 形 ***********************************************
//绘制矩形
//函数原型
QRect(int left, int top, int width, int height );
QRect(QPoint &topleft, const QPoint &bottomright);
//使用
QRect rect(10,10,50,50);
painter.drawRect(rect);
//绘制圆角矩形
painter.drawRoundedRect(rect , 25,25 , Qt::RelativeSize);
//绘制圆形
//函数原型
QPainter::drawEllipse(int x, int y, int w, int h);
QPainter::drawEllipse(const QPointF ¢er, qreal rx, qreal ty);
QPainter::drawEllipse(const QPoint ¢er, int rx, int ry);
//使用
painter.drawEllipse(QPoint(50,0),50,50);
//画扇形
int x = -qMin( width(),height() )/2;
int y = -qMin( width(),height() )/2;
int w = qMin( width(),height() );
int h = qMin( width(),height() );
QRectF pieRect(x,y,w,h);
painter.drawPie(pieRect,-startrecv*16,36*16)//画扇
//绘制点
//函数原型
void drawPoint(const QPointF &position);
void drawPoint(const QPoint &position);
void drawPoint(int x,int y);
void drawPoints(const QPointF *points , int count);
//使用
QPoint points[4] = { QPoint(10,80), QPoint(20,10), QPoint(80,30), QPoint(90,70) };
painter.drawPoints(points , 4);
//绘制线
//使用
//绘制多段线
painter.drawPolyline(points,4);
//绘制多边形
painter.drawPolygon(points,4);
设计视口和逻辑窗口
/************************ 设计视口和逻辑窗口***************************************************
//函数原型
//设置视口
QPainter::setViewport(int x, int y, int w, int h);
//使用
QRect rect(30,30,60,60);
painter.setViewport(rect);
//设置窗口,逻辑坐标,前两个参数为左上角的坐标,后两个为宽度和高度
painter.setWindow(-100,-100,200,200);
路径
QPainterPath path;
path.moveTo(50,250); //起始点移动到 50,250
path.lineTo(50,20); //从起始点画到 50,20
path.moveTo(80,100);
//贝塞尔曲线
path.cubicTo( QPointF(105,40) , QPointF(115,80) , QPointF(120,60) );
painter.drawPath(path);
painter.drawPath(path);
painter.rotate(10); //坐标系旋转十度,负数逆时针旋转,正数顺时针旋转
painter.path.translate(200,0); //平移
painter.translate( rect().center() ); //将坐标原点移动到屏幕中心