
你的代码有几处问题:
1
Private Sub Form_Load()
Dim nwidth, nheight, nhourlen, nminlen, nseclen '你把nmainlen打错了
Dim Picture1
这些变量是过程变量,不能再其他过程使用,且当Form_Load事件结束时,这些变量就不存在了。所以要把这些变量提前到通用区域,也就是代码的最前面。
2
Dim Picture1
这什么意思呀?我想,你是直接定义一个PictureBox控件变量,然后就能使用它。这是错误的,要么你就老实一点在窗体上添加PictureBox控件,要么你就用动态添加PictureBox控件。算了,你还是老实一点在窗体上添加PictureBox控件吧。
3
nwidth = Picture1Width - 20
nheight = Picture1Height - 10
这有问题。如果PictureBox控件的ScaleMode属性改变时,就会出现意想不到的结果了。改为如下:
nwidth = Picture1ScaleWidth
nheight = Picture1ScaleHeight
4
nminute = Minute(Time()) + nsecond / 60
nhour = (Hour(Time()) Mod 12) + nminute / 60 + nsecond / 3600
因为nminute已经包含了nsecond,所以nhour的计算就不需要再加上nsecond了,改为nhour = (Hour(Time()) Mod 12) + nminute / 60就行了。
5
carc_是什么意思呀?你自定义的函数?但你没有定义呀。
6
Picture1Line里的画线有点问题。
改成如下:
在通用区域Dim Pi As Single
在Form_Load事件Pi=31415926
在Timer1_Timer事件里:
Dim nSecond, nMinute, nHour As Integer
Dim X As Single, Y As Single
Picture1Cls
nSecond = Second(Time())
nMinute = Minute(Time()) + nSecond / 60
nHour = (Hour(Time()) Mod 12) + nMinute / 60
X = nHourlen Sin(nHour 30 / 180 Pi)
Y = nHourlen Cos(nHour 30 / 180 Pi)
Picture1DrawWidth = 3
Picture1ForeColor = RGB(255, 0, 0)
Picture1Line (nWidth / 2 - X / 10, nHeight / 2 + Y / 10)-(nWidth / 2 + X, nHeight / 2 - Y)
X = nMinlen Sin(nMinute 6 / 180 Pi)
Y = nMinlen Cos(nMinute 6 / 180 Pi)
Picture1DrawWidth = 2
Picture1ForeColor = RGB(0, 255, 0)
Picture1Line (nWidth / 2 - X / 10, nHeight / 2 + Y / 10)-(nWidth / 2 + X, nHeight / 2 - Y)
X = nSeclen Sin(nSecond 6 / 180 Pi)
Y = nSeclen Cos(nSecond 6 / 180 Pi)
Picture1DrawWidth = 1
Picture1ForeColor = RGB(0, 0, 255)
Picture1Line (nWidth / 2 - X / 10, nHeight / 2 + Y / 10)-(nWidth / 2 + X, nHeight / 2 - Y)
7
没有刻度盘。在Form_Load事件添加代码如下:
Dim i As Integer
Dim X As Single, Y As Single
Picture1AutoRedraw = True
Picture1DrawWidth = 8
Picture1ForeColor = RGB(255, 255, 0)
For i = 1 To 12
X = (nSeclen + 80) Sin(i 30 / 180 Pi)
Y = (nSeclen + 80) Cos(i 30 / 180 Pi)
Picture1PSet (nWidth / 2 + X, nHeight / 2 - Y)
X = nSeclen 12 Sin(i 30 / 180 Pi) - Picture1TextHeight(CStr(i)) / 2
Y = nSeclen 12 Cos(i 30 / 180 Pi) + Picture1TextHeight(CStr(i)) / 2
Picture1CurrentX = nWidth / 2 + X
Picture1CurrentY = nHeight / 2 - Y
Picture1Print CStr(i)
Next i
Picture1AutoRedraw = False
#include <graphicsh>
#include <conioh>
#include <mathh>
void Draw(int hour, int minute, int second)
{
double a_hour, a_min, a_sec; // 时、分、秒针的弧度值
int x_hour, y_hour, x_min, y_min, x_sec, y_sec; // 时、分、秒针的末端位置
int x_hour1,y_hour1,x_min1,y_min1,x_sec1,y_sec1;
// 计算时、分、秒针的弧度值
a_sec = second 2 PI / 60;
a_min = minute 2 PI / 60 ;
a_hour= hour 2 PI / 12 + a_min / 12;;
// 计算时、分、秒针的首末端位置
x_sec = 320 + (int)(120 sin(a_sec));
y_sec = 240 - (int)(120 cos(a_sec));
x_min = 320 + (int)(100 sin(a_min));
y_min = 240 - (int)(100 cos(a_min));
x_hour= 320 + (int)(70 sin(a_hour));
y_hour= 240 - (int)(70 cos(a_hour));
x_sec1= 320 - (int)(15 sin(a_sec));
y_sec1= 240 + (int)(15 cos(a_sec));
x_min1= 320 - (int)(10 sin(a_min));
y_min1= 240 + (int)(10 cos(a_min));
x_hour1= 320 - (int)(5 sin(a_hour));
y_hour1= 240 + (int)(5 cos(a_hour));
// 画时针
setlinestyle(PS_SOLID, NULL, 7);
setcolor(WHITE);
line(x_hour1, y_hour1, x_hour, y_hour);
// 画分针
setlinestyle(PS_SOLID, NULL, 4);
setcolor(LIGHTGRAY);
line(x_min1, y_min1, x_min, y_min);
// 画秒针
setlinestyle(PS_SOLID, NULL, 2);
setcolor(RED);
line(x_sec1, y_sec1, x_sec, y_sec);
}
void main()
{
initgraph(640, 480); // 初始化 640 x 480 的绘图窗口
// 绘制一个简单的表盘
circle(320, 240, 2);
circle(320, 240, 60);
circle(320, 240, 160);
outtextxy(296, 330, " 竹斌");
int x,y;
for(int i=0;i<12;i++)
{
x=320+(int)(140sin(30i2PI/360));
y=240-(int)(140cos(30i2PI/360));
switch(i)
{
case 0:outtextxy(x-5,y-5,"12");break;
case 1:outtextxy(x-5,y-5,"1");break;
case 2:outtextxy(x-5,y-5,"2");break;
case 3:outtextxy(x-5,y-5,"3");break;
case 4:outtextxy(x-5,y-5,"4");break;
case 5:outtextxy(x-5,y-5,"5");break;
case 6:outtextxy(x-5,y-5,"6");break;
case 7:outtextxy(x-5,y-5,"7");break;
case 8:outtextxy(x-5,y-5,"8");break;
case 9:outtextxy(x-5,y-5,"9");break;
case 10:outtextxy(x-5,y-5,"10");break;
case 11:outtextxy(x-5,y-5,"11");break;
}
}
// 设置 XOR 绘图模式
setwritemode(R2_XORPEN); // 设置 XOR 绘图模式
//画刻度
int a,b,a1,b1,n=0;
for(n=0;n<60;n++)
{
a=320+(int)(160 sin(n2PI/60));
b=240-(int)(160 cos(n2PI/60));
a1=320+(int)(150 sin(n2PI/60));
b1=240-(int)(150 cos(n2PI/60));
if(n%5==0)
setlinestyle(PS_SOLID,NULL,5);
else
setlinestyle(PS_SOLID,NULL,1);
line(a1,b1,a,b);
}
// 绘制表针
SYSTEMTIME ti; // 定义变量保存当前时间
while(!kbhit()) // 按任意键退出钟表程序
{
GetLocalTime(&ti); // 获取当前时间
Draw(tiwHour, tiwMinute, tiwSecond); // 画表针
Sleep(1000); // 延时 1 秒
Draw(tiwHour, tiwMinute, tiwSecond); // 擦表针(擦表针和画表针的过程是一样的)
}
closegraph(); // 关闭绘图窗口
}
/开发环境:turbo c 20模拟时钟转动程序代码/
#include"graphicsh"
#include"mathh"
#include"dosh"
#define pi 31415926
#define X(a,b,c) x=acos(bcpi/180-pi/2)+300
#define Y(a,b,c) y=asin(bcpi/180-pi/2)+240
#define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y)
void init() /划时钟边框函数/
{
int i,l,x1,x2,y1,y2;
setbkcolor(1);
circle(300,240,200);
circle(300,240,205);
circle(300,240,5);
for(i=0;i<60;i++) /划钟点上的短线/
{
if(i%5==0)
l=15;
else
l=5;
x1=200sin(i6pi/180)+300;
y1=200cos(i6pi/180)+240;
x2=(200-l)sin(i6pi/180)+300;
y2=(200-l)cos(i6pi/180)+240;
line(x1,y1,x2,y2);
}
}
main()
{
int x,y,i,k=1;
int gdriver=9,gmode=2;
unsigned char h,m,s;
int o,p,q;
float n;
struct time t[1];
struct date d[1];
initgraph(&gdriver,&gmode,"c:\\tc");
initgraph(&gdriver,&gmode,"c:\\tc");
for(i=0;i<=6;i++)
{
settextstyle(TRIPLEX_FONT,HORIZ_DIR,i); /控制输出字符的字体,方向,大小/
cleardevice();
settextjustify(1,1); /在指定坐标上输出字符串/
outtextxy(300,80,"12") ;
outtextxy(300,390,"6");
outtextxy(140,230,"9");
outtextxy(460,230,"3");
outtextxy(380,100,"1");
outtextxy(220,100,"11");
outtextxy(430,160,"2");
outtextxy(430,310,"4");
outtextxy(380,370,"5");
outtextxy(220,370,"7");
outtextxy(160,160,"10");
outtextxy(160,310,"8");
}
init();
setwritemode(1); /设置画线的输出模式/
if(k!=0)
{
getdate(d); /获得系统日期函数/
o=d[0]da_year;
p=d[0]da_mon;
q=d[0]da_day;
gettime(t); /获得系统时间函数/
h=t[0]ti_hour;
m=t[0]ti_min;
s=t[0]ti_sec;
}
setcolor(7); /设置时针颜色/
n=(float)h+(float)m/60;
d(150,n,30); /画出时针/
setcolor(14); /设置分针颜色/
d(170,m,6); /画出分针/
setcolor(4); /设置秒针颜色/
d(190,s,6); /画出秒针/
while(!kbhit()) /控制程序按下任意键退出/
{
while(t[0]ti_sec==s)
gettime(t);
gotoxy(44,18); /使光标移动到指定坐标/
printf("\b\b\b\b\b\b\b\b\b"); /退格,使表示时间的字符串不断变化/
sound(400); /按给定的频率打开PC扬声器/
delay(70); /中断程序的执行,时间为70毫秒/
sound(200);
delay(30);
nosound(); /按给定的频率关闭PC扬声器/
setcolor(4);
d(190,s,6);
s=t[0]ti_sec;
d(190,s,6);
if(t[0]ti_min!=m)
{
setcolor(14);
d(170,m,6);
m=t[0]ti_min;
d(170,m,6);
}
if(t[0]ti_hour!=h)
{
setcolor(7);
d(150,h,30);
h=t[0]ti_hour;
d(150,h,30);
sound(1000);
delay(240);
nosound();
delay(140);
sound(2000);
delay(240);
nosound();
}
if(s<10) /用字符的形式输出时间/
{ if(m<10)
printf("%u:0%u:0%u",h,m,s);
else
printf("%u:%u:0%u",h,m,s);
}
else
{ if(m<10)
printf("%u:0%u:%u",h,m,s);
else
printf("%u:%u:%u",h,m,s);
}
gotoxy(34,19); /在指定坐标上输出日期/
printf("%d年%d月%d日",o,p,q);
printf("\b\b\b\b\b\b\b\b\b");
}
getch();
closegraph();
}
图11
程序如下:
library IEEE;
use IEEESTD_LOGIC_1164ALL;
use IEEESTD_LOGIC_ARITHALL;
use IEEESTD_LOGIC_UNSIGNEDALL;
entity xuan21 is
Port ( alarm,a,b: in std_logic;
y:out std_logic);
end xuan21 ;
architecture one of xuan21 is
begin
process(alarm,a,b)
begin
if alarm='0' then y<=a;else y<=b;
end if;
end process;
end one;
仿真波形如下图12:
图12
(2)三位二选一:
模块图如图13。用以进行正常计时时间与闹铃时间显示的选择,alarm输入为按键。当alarm按键未曾按下时二选一选择器会选择输出显示正常的计时结果,否则当alarm按键按下时选择器将选择输出显示闹铃时间显示。
图13
程序如下:
library IEEE;
use IEEESTD_LOGIC_1164ALL;
use IEEESTD_LOGIC_ARITHALL;
use IEEESTD_LOGIC_UNSIGNEDALL;
entity x213 is
Port ( alarm : in std_logic;
y:out std_logic_vector(3 downto 0);
a,b: in std_logic_vector(3 downto 0));
end x213;
architecture one of x213 is
begin
process(alarm,a,b)
begin
if alarm='0' then y<=a;else y<=b;
end if;
end process;
end one;
仿真结果如下图14:
图14
8、整点报时及闹时:
模块图如图15。在59分51秒、53秒、55秒、57秒给扬声器赋以低音512Hz信号,在59分59秒给扬声器赋以高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点。当系统时间与闹铃时间相同时给扬声器赋以高音1024Hz信号。闹时时间为一分钟。
图15
程序如下:
library IEEE;
use IEEESTD_LOGIC_1164ALL;
use IEEESTD_LOGIC_ARITHALL;
use IEEESTD_LOGIC_UNSIGNEDALL;
entity voice is
Port ( hou1,huo0,min1,min0,sec1,sec0,hh,hl,mh,ml: std_logic_vector(3 downto 0);
in_1000,in_500:in std_logic;
q : out std_logic);
end voice;
architecture one of voice is
begin
process(min1,min0,sec1,sec0)
begin
if min1="0101" and min0="1001" and sec1="0101" then
if sec0="0001" or sec0="0011" or sec0="0101" or sec0="0111"
then q<=in_500;
elsif sec1="0101" and sec0="1001" then q<=in_1000;
else q<='0';
end if;
else q<='0';
end if;
if min1=mh and min0=ml and hou1=hh and huo0=hl then
q<=in_1000;
end if;
end process;
end one;
仿真波形如下图16
图16
9、顶层原理图:
三、感想
通过这次设计,既复习了以前所学的知识,也进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在画顶层原理图时,遇到了不少问题,最大的问题就是根本没有把各个模块的VHD文件以及生成的器件都全部放在顶层文件的文件夹内,还有就是程序设计的时候考虑的不够全面,没有联系着各个模式以及实验板的情况来编写程序,以至于多考虑编写了译码电路而浪费了很多时间。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示
:在分频模块中,设定输入的时钟信号后,却只有二分频的结果,其余三个分频始终没反应。后来,在数十次的调试之后,才发现是因为规定的信号量范围太大且信号的初始值随机,从而不能得到所要的结果。还有的仿真图根本就不出波形,怎么调节都不管用,后来才知道原来是路径不正确,路径中不可以有汉字。真是细节决定成败啊!总的来说,这次设计的数字钟还是比较成功的,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。
四、
参考资料:
1、潘松,王国栋,VHDL实用教程〔M〕成都:电子科技大学出版社,2000(1)
2、崔建明主编,电工电子EDA仿真技术北京:高等教育出版社,2004
3、李衍编著,EDA技术入门与提高王行西安:西安电子科技大学出版社,2005
4、侯继红,李向东主编,EDA实用技术教程北京:中国电力出版社,2004
5、沈明山编著,EDA技术及可编程器件应用实训北京:科学出版社,2004
6、侯伯亨等,VHDL硬件描述语言与数字逻辑电路设计西安: 西安电子科技大学出版社,1997
7、辛春艳编著,VHDL硬件描述语言北京:国防工业出版社,2002 就这些
你好这是我用mfc编写的一个时钟程序我不用你存话费你采纳就ok了别不采纳我可是花了很长时间来弄的源程序//这是关键代码voidCClockView::OnDraw(CDCpDC){ CClockDocpDoc=GetDocument(); ASSERT_VALID(pDoc); //TODO:adddrawcodefornativedatahere CBitmapbg; bgLoadBitmap(IDB_BITMAP1); CDCdc; dcCreateCompatibleDC(pDC); dcSelectObject(bg); pDC->BitBlt(0,0,400,400,&dc,0,0,SRCCOPY); CTimetm; tm=CTime::GetCurrentTime();//得到系统的时分秒inti=tmGetMinute()-1;//60 intj=tmGetHour();//24 intn=tmGetSecond();//60/ CStringstr; strFormat("%d:%d",j,i); MessageBox(str);/ //2460 floatmin=(float)(i-14)/60231415; floathour=(float)(j-3)/12231415;//角度 floatsec=(float)(n-14)/60231415; //原点位置intorg_x=200; intorg_y=200; //时针 inthour_ar=90;//长度 inth_x=hour_arcos(hour)+200; inth_y=hour_arsin(hour)+200; //分针 intmin_ar=140;//长度 intm_x=min_arcos(min)+200; intm_y=min_arsin(min)+200; //秒针 intsec_ar=170;//长度 ints_x=sec_arcos(sec)+200; ints_y=sec_arsin(sec)+200;CPenp1(PS_SOLID,4,RGB(100,100,100)); CPenpenOld=(CPen)pDC->SelectObject(p1); pDC->MoveTo(org_x,org_y); pDC->LineTo(m_x,m_y); CPenp2(PS_SOLID,3,RGB(200,100,100)); pDC->SelectObject(p2); pDC->MoveTo(org_x,org_y); pDC->LineTo(h_x,h_y);CPenp3(PS_SOLID,2,RGB(150,100,100)); pDC->SelectObject(p3); pDC->MoveTo(org_x,org_y); pDC->LineTo(s_x,s_y); SetTimer(1,1000,NULL);}voidCClockView::OnTimer(UINTnIDEvent){ //TODO:Addyourmessagehandlercodehereand/orcalldefault this->RedrawWindow(); CView::OnTimer(nIDEvent);}
3D钟表模型:使用SolidWorks2014 绘制;
绘制过程:
1、在前视基准面上绘制草图;
2、旋转凸台生成实体;
3、在表盘的平面上绘制草图 中心矩形:1X15;矩形中心与原点竖直;
4、拉伸凸台生成表盘标线:给定深度1;勾选合并结果;
5、圆周阵列:阵列轴选择圆柱面;数量12;要阵列的特征选择拉伸凸台特征;
6、在表盘平面上绘制草图 中心线+草图数字:①绘制一段长度1mm的中心线并标注尺寸;②绘制两条中心线,两中心线夹角30°,其中一条竖直并穿过原点,两中心线的交点与原点距离10;③绘制一条中心线,中心线中点与30°中心线的上端点重合,与30°中心线的夹角120°;
7、鼠标左键点选尺寸1,在左侧属性管理器中选择主要值中的尺寸名称字符,按键盘Ctrl+C复制;
8、插入草图文字:曲线选择与30度中心线端点重合的中心线;点击文本框,按键盘Ctl+V粘贴复制的字符;给字符加英文格式的双引号;位置选择居中;取消使用文档字体;设定位置高度20;
9、拉伸凸台:给定深度1;勾选合并结果;
10、圆周阵列:阵列轴选择角度尺寸30°;角度30°;数量12个;要阵列的特征选择拉伸凸台特征;勾选变化的实例;选择尺寸1,设定增量1;选择尺寸120°,设定增量30°;
11、在前视基准面上绘制草图:中间的竖直直线与原点重合;
12、旋转凸台生成钟表指针的转轴;
13、在由下至上的第一个台阶面上绘制草图 时针轮廓;
14、拉伸凸台生成时针:给定深度05;
15、在由下至上的第二个台阶面上绘制草图 分针轮廓;
16、拉伸凸台生成分针:给定深度05;
17、在由下至上的第三个台阶面上绘制草图 秒针轮廓;
18、拉伸凸台生成秒针:给定深度05;
19、在顶面上绘制草图 圆(使用转换实体引用绘制);
20、拉伸凸台生成玻璃:开始条件,反向,等距4;结束条件,给定深度2;
21、完成。
以下是四位数码管可调时带秒闪烁的c51单片机电子钟程序(c语言)。
/ 本程序中,晶振为12MHz, /
/ 时间控制采用定时中断控制方式。 /
/ 模式和时间调整采用查询方式。 /
#include<reg52h>
sbit P20=P2^0; //分个位控制端
sbit P21=P2^1; //分十位控制端
sbit P22=P2^2; //时个位控制端
sbit P23=P2^3; //时十位控制端
sbit led=P2^7; //second display led
sbit key0=P3^0; //模式设置
sbit key1=P3^1; //加
sbit key2=P3^2; //减
unsigned char hour,min,sec,T50ms;
unsigned char modstate; //模式状态
unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//段码
void init(); //初始化子程序声明
void delay500us(unsigned char X); //延时子程序声明
void display(); //显示子程序声明
void display001(); //显示子程序声明
void display002(); //显示子程序声明
void keyscan(); //按键识别子程序声明
void main()
{
init();
while(1)
{
keyscan();
}
}
void init() //初始化子程序
{
TMOD=0x01;
TH0=(65536-49990)/256;
TL0=(65536-49990)%256;
ET0=1;
EA=1;
TR0=1;
}
void delay500us(unsigned char X)
{
unsigned char i,j;
for(i=X;i>0;i--)
for(j=248;j>0;j--);
}
void timer0() interrupt 1 //timer0中断服务子程序,定时时间为50ms,本程序加了10us的时间修正量
{
TMOD=0x01;
TH0=(65536-49990)/256;
TL0=(65536-49990)%256;
T50ms++;
if(T50ms>=20)
{
T50ms=0;
sec++;
if(sec>=60)
{
sec=0;
min++;
if(min>=60)
{
min=0;
hour++;
if(hour>=24)hour=0;
}
}
}
}
void display()
{
P20=1;
P21=1;
P22=1;
P23=1;
P0=table[hour/10];
P23=0;
delay500us(5);
P20=1;
P21=1;
P22=1;
P23=1;
P0=table[hour%10];
P22=0;
delay500us(5);
P20=1;
P21=1;
P22=1;
P23=1;
P0=table[min/10];
P21=0;
delay500us(5);
P20=1;
P21=1;
P22=1;
P23=1;
P0=table[min%10];
P20=0;
delay500us(5);
if(T50ms<=10)led=0;
if(T50ms>10)led=1;
}
void display001()
{
P20=1;
P21=1;
P22=1;
P23=1;
P0=table[hour/10];
P23=0;
delay500us(10);
P20=1;
P21=1;
P22=1;
P23=1;
P0=table[hour%10];
P22=0;
delay500us(10);
}
void display002()
{
P20=1;
P21=1;
P22=1;
P23=1;
P0=table[min/10];
P21=0;
delay500us(10);
P20=1;
P21=1;
P22=1;
P23=1;
P0=table[min%10];
P20=0;
delay500us(10);
}
void keyscan() //按键识别钟程序
{
while(modstate==0)
{
display();
if(key0==0)
{
display();
if(key0==0)modstate++; //这两句加在一起为延时10ms软件防抖设计。
while(key0==0)display001(); //等待按键释放。
}
}
////
while(modstate==1)
{
display001();
if(key0==0)
{
display001();
if(key0==0)modstate++; //这两句加在一起为延时10ms软件防抖设计。
while(key0==0)display002(); //等待按键释放。
}
if(key1==0)
{
display001();
if(key1==0)
{
hour++;
if(hour>=24)hour=0;
while(key1==0)display001();
}
}
if(key2==0)
{
display001();
if(key2==0)
{
hour--;
if(hour>=24)hour=0;
while(key2==0)display001();
}
}
}
////
while(modstate==2)
{
display002();
if(key0==0)
{
display002();
if(key0==0)modstate=0; //这两句加在一起为延时10ms软件防抖设计。
while(key0==0)display(); //等待按键释放。
}
if(key1==0)
{
display002();
if(key1==0)
{
min++;
if(min>=60)min=0;
while(key1==0)display002();
}
}
if(key2==0)
{
display002();
if(key2==0)
{
min--;
if(min>=60)min=0;
while(key2==0)display002();
}
}
}
}
下面是一个时钟程序代码,你可以参考一下。
Const
PI
=
314159265
Dim
H,
W,
R
As
Integer
'窗体高、宽、圆半径
Private
Sub
BiaoKe()
Dim
I
As
Integer
'外盘
Circle
(W
\
2,
H
\
2),
R,
vbBlue
'中心
Circle
(W
\
2,
H
\
2),
1,
vbWhite
'盘面各点
For
I
=
0
To
59
If
I
Mod
5
=
0
Then
Circle
(W
\
2
+
R
Cos(I
PI
/
30),
H
\
2
+
R
Sin(I
PI
/
30)),
2,
vbGreen
Else
Circle
(W
\
2
+
R
Cos(I
PI
/
30),
H
\
2
+
R
Sin(I
PI
/
30)),
1,
vbWhite
End
If
Next
I
End
Sub
Private
Sub
Form_Load()
MeShow
MeCls
H
=
frmTimeScaleHeight
W
=
frmTimeScaleWidth
R
=
W
\
4
lbTimeLeft
=
(frmTimeScaleWidth
-
lbTimeWidth)
\
2
lbTimeTop
=
frmTimeScaleHeight
-
R
\
4
End
Sub
Private
Sub
Form_Resize()
Call
Form_Load
End
Sub
Private
Sub
Timer1_Timer()
Dim
T1,
T2,
T3
As
Integer
Dim
I,
J,
K
As
Integer
MeCls
T1
=
Hour(Time):
T2
=
Minute(Time):
T3
=
Second(Time)
I
=
T1
-
15
J
=
T2
-
15
K
=
T3
-
15
'钟表外壳
Call
BiaoKe
'画时针
Line
(W
\
2,
H
\
2)-(W
\
2
+
05
(R
Cos((I
+
J
/
60)
PI
/
6)),
H
\
2
+
05
(R
Sin((I
+
J
/
60)
PI
/
6))),
vbGreen
'画分针
Line
(W
\
2,
H
\
2)-(W
\
2
+
07
(R
Cos((J
+
K
/
60)
PI
/
30)),
H
\
2
+
07
(R
Sin((J
+
K
/
60)
PI
/
30))),
vbYellow
'画秒针
Line
(W
\
2,
H
\
2)-(W
\
2
+
09
(R
Cos(K
PI
/
30)),
H
\
2
+
09
(R
Sin(K
PI
/
30))),
vbRed
K
=
K
+
1
If
K
>
360
Then
K
=
K
Mod
360
lbTimeCaption
=
Time
End
Sub
以上就是关于如何设计一个时钟演示程序 vb全部的内容,包括:如何设计一个时钟演示程序 vb、图形时钟用C语言怎么编、C语言程序设计题:模拟时钟转动的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)