2D制图实战之绘制时钟
来源:互联网 发布:大学生常用电脑软件 编辑:程序博客网 时间:2024/06/05 22:57
#include "clock.h"#include<QTime>#include<QTimer>#include<QPainter>static const QPoint sed[4] = { QPoint(0, -90), QPoint(2, 0), QPoint(0,8), QPoint(-2,0)};static const QPoint min[4] = { QPoint(0,-70), QPoint(3,0), QPoint(0,8), QPoint(-3,0)};static const QPoint hour[4] = { QPoint(0,-50), QPoint(3,0), QPoint(0,8), QPoint(-3,0)};Clock::Clock(QWidget *parent) : QWidget(parent){ QTimer *timer = new QTimer(this); timer->start(1000); connect(timer,SIGNAL(timeout()),this,SLOT(update())); QFont font; font.setPointSize(10);//字体大小设置为10 setFont(font);}void Clock::paintEvent(QPaintEvent *){ QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing, true);//消除锯齿 int side = qMin(width(), height()); painter.setViewport((width() - side) / 2, (height() - side) / 2,side, side); painter.setWindow(0, 0, 200, 200);//设置(0,0)为新的坐标原点 draw(&painter);}Clock::~Clock(){}void Clock::draw(QPainter *painter){ QPen thickPen(palette().foreground(), 2.0);//设置刻度线为粗黑 QPen thinPen(palette().foreground(), 1.5);//设置刻度线为灰 QTime time = QTime::currentTime(); painter->translate(100,100);//重新设定坐标原点 painter->setRenderHint(QPainter::Antialiasing);//消除锯齿 painter->setBrush(Qt::red); painter->setPen(Qt::red); painter->save();//保存坐标系,防止坐标系跑偏了 painter->rotate(6.0*time.second());//注意是6.0,不是6 painter->drawConvexPolygon(sed,4); painter->restore();//复位之前的坐标系 painter->setBrush(Qt::blue); painter->setPen(Qt::blue); painter->save(); painter->rotate(6.0*(time.minute()+time.second()/60.0)); painter->drawConvexPolygon(min,4); painter->restore(); painter->setBrush(Qt::black); painter->setPen(Qt::black); painter->save(); painter->rotate(30.0*(time.hour()+time.minute()/60.0)); painter->drawConvexPolygon(hour,4); painter->restore(); /*画刻度还有数字*/ for (int i = 1; i <=60; ++i) { painter->save(); painter->rotate(6*i);//坐标轴旋转6度 if (i % 5 == 0) { painter->setPen(thickPen); painter->drawLine(0, -98, 0, -82); painter->drawText(-20, -82, 40, 40,Qt::AlignHCenter | Qt::AlignTop,QString::number(i/5)); } else { painter->setPen(thinPen); painter->drawLine(0, -98, 0, -88); } //painter->rotate(-DegreesPerMinute); painter->restore(); }}
阅读全文
0 0
- 2D制图实战之绘制时钟
- 2D制图实战之绘制星球
- 2D制图实战之仿QQ截图工具
- MasterCAM 9.1 2D制图绘制 点线面
- 【UWP通用应用开发】编辑文本、绘制图形、3D透视效果及绘制时钟实战
- Qt之绘制时钟
- qt之 绘制时钟
- Canvas学习之绘制时钟
- Quartz 2D之基本图形绘制
- GUI之绘制2D贴图
- QT5之2D绘图-绘制路径
- iOS开发之手动绘制时钟模拟器
- 自定义View之canvas绘制时钟
- Qt绘制2d
- Qt绘制2d
- html5之canvas标签应用之 2d图形绘制以及图片绘制
- 突袭HTML5之SVG 2D入门2 - 图形绘制
- HTML5之SVG 2D入门2 - 图形绘制
- 不需要新建表,或者修改表结构,直接添加表分区。
- java 创建临时临时文件
- 基于TI Davinci架构的双核嵌入式应用处理器OMAPL138开发入门
- Fatfs文件系统学习
- 广播--案例:拦截有序广播
- 2D制图实战之绘制时钟
- Activity的四种启动模式
- iOS- 详解文本属性Attributes(文本的样式设置/阴影/下划线/颜色)
- php 在本地解压 反压缩 zip rar
- Python练习7-统计日记中最重要的词
- 设计模式之饿汉单例
- C++内存越界(转)
- Mybatis代码自动生成配置文件
- 10 orangepi裸板控制IO