C++图形时钟(画图入门篇)

本文是C++图形时钟画图入门教程。先介绍了ACLLib画图库,包括其基于Win32API、入口函数及常用画图函数等;接着提到获取系统时间要加头文件“time.h”;最后阐述制作时钟,建立时钟类,还介绍了随机数生成、定时器函数及主函数代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++图形时钟(画图入门篇)
第一次接触制作窗口画图感觉还不错,听老师讲过后写的,希望对大家有帮助。
本次工程是制作一个圆形和方形时钟,涉及画图操作,先介绍一下画图库(ACLLib)的用到的函数;

1.图形库的介绍(这里只介绍此工程用到的函数,想额外了解的可以百度此库的名称)
ACLLib是一个基于Win32API的函数库,提供了相对较为简单的方式来做Windows程序,同时也是一个C语言图形库
需要Setup是ACLLib程序的入口/启动函数 ,其意义等同于main函数 ;
一般框架为:

#include "acllib.h"

int Setup(){
    initWindow("test",DEFAULT,DEFAULT,width,width);
    return 0;
}

画图稍显需要构建一个窗口
函数原型为: void initWindow(const char title[] , int left , int top , int width , int height);
参数含义依次为:窗口标题,窗口左边起始坐标,上面起始坐标,窗口宽度,窗口高度。

如果在窗口上画图需要把画图部分放在*beninPaint()endPaint()*之间,分别代表画图的开始和画图的结束。
另外需要注意的是在Windows中,坐标是以像素点的数字来定义的,左上角是(0,0),x轴自左向右增大,而y轴自上向下增大。

void setPenWidth(int width) ;//设置画笔的宽度,单位为像素点
void ellipse(int Leftx, int TopX ,int width,int height);//画椭圆(起点下,y;宽度高度)
void rectangle(int Leftx, int TopX ,int width,int height);//画矩形(起点下,y;宽度高度)
void moveTo(int x, int y); //把当前坐标移动到(x,y)
void lineTo(int x,int y); //从当前点画线到(x,y)
setPenColor(ACL_Color newColor); //设置画笔颜色
setBrushColor(ACL_Color newColor); //设置所画区域颜色

2. 获取系统时间

#include<stdio.h>
#include<time.h>
int main()
{
    time_t timer = time(NULL);
    printf("ctime is %s\n", ctime(&timer));//得到日历时间
    return 0;
}

需要注意的是别忘记加头文件 “time.h”,time.h是C

程序清单 按以下步骤向视图类(CClockView)添加下列数据成员及成员函数。 (1) 添加表示年、月、日、时、分、秒的变量。 int year; int month; int day; int hour; int minute; int second; (2) 添加秒表的计数变量。 int watch; (3) 添加时钟的画笔及画刷变量。 CPen m_HouPen, m_MinPen, m_SecPen; // 各种针的画笔 CBrush m_MarkBrush; // 表盘标记的画刷 (4) 添加时钟控制变量。 CPoint m_Center; // 表的中心 double m_Radius; // 表的半径 CPoint m_Hour [2], m_OldHour [2]; // 时针当前及前一次位置 CPoint m_Minute [2], m_OldMin [2]; // 分针当前及前一次位置 CPoint m_Second [2], m_OldSec [2]; // 秒针当前及前一次位置 (5) 添加秒表的两个按钮位置变量。 CRect m_WatchStart; CRect m_WatchStop; (6) 添加两个函数,计算时钟各指针位置。 void SetClock (int hour, int minute, int second); CPoint GetPoint (int nLenth, int nValue); (7) 在视图类构造函数中增加初始化语句: CClockView::~CClockView() { //设定时间 year=2010; month=11; day=22; hour=0; minute=0; second=0; //设定画笔画刷 m_HouPen.CreatePen(PS_SOLID,5,RGB(255,0,0));//时针画笔 m_MinPen.CreatePen(PS_SOLID,3,RGB(0,0,250));//分针画笔 m_SecPen.CreatePen(PS_SOLID,1,RGB(0,0,0));//秒针画笔 m_MarkBrush.CreateSolidBrush(RGB(250,250,0)); //设定表芯位置 m_Center.x=222; m_Center.y=222; //设定时钟半径 m_Radius=222; //计算指针位置 SetClock(hour,minute,second); //设定秒表计数器及按钮位置 watch=0; m_WatchStart=CRect(480,310,560,340);//启动按钮 m_WatchStop=CRect(590,310,670,340);//停止按钮 } 编写指针位置函数SetClock和GETpOINT。 首先在ClockView.cpp文件头部下添加下面两行代码,以便进行数学计算。 #define PI 3.14159265258 #include"math.h" 然后添加下列代码: //计算个指针位置的函数 void CClockView::SetClock(int hour,int minute,int second) { hour=hour*5; hour=hour+minute/12; //保存时针原位置 m_OldHour[0]=m_Hour[0]; m_OldHour[1]=m_Hour[1];
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值