Qt 2D绘图

Paint Systerm 关键字;

基本绘制和填充

  • QPainter来完成具体的绘制操作,可以绘制一切想要的图形,包括文本和图片。
  • QPainter 可以在任何继承字QPaintDevice类的任何对象上绘制操作。
  • QPainter一般在 部件重绘事件处理函数 paintEvent()中绘制,首先创建QPainter对象,然后进行绘制,在销毁对象。
  • void Widget::paintEvent(QPaintEvent *event)
    {
    QPainter painter(this);
    painter.drawLine(QPonit(0,0),QPoint(100,100));
    }

  • 使用画笔QPen类 为QPainter提供了画笔来绘制线条和形状的轮廓;可以设置画笔的 画刷(提供线条的颜色)、线宽、画笔风格(有实线、点线等其中Qt::NoPen表示不进行线条轮廓绘制)、画笔链接风格;
    QPen pen(..) ; QPainter.setPen(pen)
  • 使用画刷QBrush类、QBrush类提供了画刷来填充图形,一个画刷使用他的颜色和风格(如他的填充模式)来定义。
    其填充模式由Qt::BrushStyle枚举变量来定义
    QColor 可以察看关键字Qt::GlobalColor;
    画刷.png
  • 渐变填充
渐变填充.png
线性渐变.png
锥形渐变.png

坐标系统

可以察看Coordinate System 关键字

gaishu.png

Qt::RenderHint渲染来提供是否使用抗锯齿(Anti-aliased)功能

QPainter的渲染提示.png
  • QPainter::scale() 函数缩放坐标系统
  • QPainter::rotate()函数顺时针旋转坐标系统
  • QPainter::shear()围绕原点来扭曲坐标系统
  • QPainter::translate()平移坐标系统
QTransform类.png
保存与恢复.png
0.png
scale.png
shear.png
  • 视口viewpoint与窗口window()
物理坐标与逻辑坐标.png
逻辑坐标与物理坐标转换示意图.png
  • 绘制文字
    QPainter painter(this);
    QRectF rect(10.0,10.0,380.0,280.0);
    painter.setPen(Qt::red);
    painter.drawRect(rect);
    painter.setPen(Qt::blue);
    painter.drawText(rect,Qt::AlignHCenter,tr("AlignHCenter"));
    painter.drawText(rect,Qt::AlignLeft,tr("AlignLeft"));
    painter.drawText(rect,Qt::AlignRight,tr("AlignRight"));
    painter.drawText(rect,Qt::AlignVCenter,tr("AlignVCenter"));
    painter.drawText(rect,Qt::AlignBottom,tr("AlignBottom"));
    painter.drawText(rect,Qt::AlignCenter,tr("AlignCenter"));
    painter.drawText(rect,Qt::AlignBottom|Qt::AlignRight,tr("AlignBottom\AlignRight"));

   painter.drawText(120,80,tr("helloworld"));
  • 绘制路径
    如果要绘制一个复杂的图形,尤其是要重复绘制这写图形的时候,可以使用QPainterPath类,然后使用QPainter::drawPath()来进行绘制。

drawPath.png

可以使用addEllipse()、addPAth()、addRect()、addRegion()、addText()、addPolygon()来向图形中添加一些图形和文字。从当前点进行绘制,绘制完成后以结束点作为新的起点。currentPosition()函数获取当前点,使用moveTo()函数来改变当前点。当组建好路径后使用drawPath()函数来绘制路径。

填充规则Qt::FillRul有Qt::addEventFill和Qt::WindingFill

绘制图像

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一:canvas简介 1.1什么是canvas? ①:canvas是HTML5提供的一种新标签 ②:HTML5 ...
    GreenHand1阅读 10,195评论 2 32
  • Core Graphics Framework是一套基于C的API框架,使用了Quartz作为绘图引擎。它提供了低...
    ShanJiJi阅读 5,557评论 0 20
  • 光华科技
    i随源阅读 1,562评论 0 0
  • 如果想知道自己到底适不适合和一个人做朋友,跟她一起做件事吧。 最近要搬家,想和同住的另一个姑娘一起找房子,半个月,...
    宝木大仙阅读 3,218评论 0 0

友情链接更多精彩内容