• 时钟、背景音乐、背景图片


    EasyX很有趣,参考EasyX官网的文章,花了几个小时做了一个时钟程序,包含背景音乐、背景图片,时钟是模仿Iphone时钟设计的,可惜不像。系数调整的比较粗略,表针走的不是非常精确,另外以后再加上个程序图标。
    #include <graphics.h>
    #include <conio.h>
    #include <stdio.h>
    #include <math.h>
    #pragma comment(lib, "Winmm.lib")	// 引用 Windows Multimedia API
    #define PI 3.1415926
    
    void Drawdail(void)
    {	
    	//大圆
    	setfillcolor(WHITE);
    	fillcircle(250, 235, 160);
    	//小圆
    	setlinecolor(0x231f20);
    	setlinestyle(PS_SOLID, NULL, 3);
    	fillcircle(250, 235, 10);
    	
    	int x, y;
    	for (int i=1; i<=60; i++)
    	{
    		x = 250 + int(145 * sin(PI * 2 * i / 60));
    		y = 250 - int(145 * cos(PI * 2 * i / 60));
    		if (i % 5 == 0)
    		{
    			char c[2];
    			sprintf(c, "%d", i/5);
    			settextcolor(0x231f20);
    			setbkmode(TRANSPARENT);
    			setfont(25, 0, "Calibri");
    			outtextxy(x-10, y-28, c);
    		}
    	}	
    }
    
    void DrawHand(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;
    	
    	// 计算时、分、秒针的弧度值
    	a_sec = second * 2 * PI / 60;
    	a_min = minute * 2 * PI / 60 + a_sec / 60;
    	a_hour= hour * 2 * PI / 12 + a_min / 12;
    	
    	// 计算时、分、秒针的末端位置
    	x_sec = int(145 * sin(a_sec));	y_sec = int(145 * cos(a_sec));
    	x_min = int(100 * sin(a_min));	y_min = int(100 * cos(a_min));
    	x_hour= int(80 * sin(a_hour));	y_hour= int(80 * cos(a_hour));
    	
    	// 画时针
    	setlinestyle(PS_SOLID, NULL, 8);
    	setcolor(BLUE);
    	line(250, 235, 250 + x_hour, 250 - y_hour);
    	
    	// 画分针
    	setlinestyle(PS_SOLID, NULL, 5);
    	setcolor(YELLOW);
    	line(250, 235, 250 + x_min, 250 - y_min);
    	
    	// 画秒针
    	setlinestyle(PS_SOLID, NULL, 2);
    	setcolor(LIGHTRED);
    	line(250, 235, 250 + x_sec, 250 - y_sec);
    }
    
    //////////////////////////////////////////////////////////////////
    // 提取指定模块中的资源文件
    // 参数:
    //		strDstFile:		目标文件名。提取的资源将保存在这里;
    //		strResType:		资源类型;
    //		strResName:		资源名称;
    // 返回值:
    //		true: 执行成功;
    //		false: 执行失败。
    //////////////////////////////////////////////////////////////////
    bool ExtractResource(LPCTSTR strDstFile, LPCTSTR strResType, LPCTSTR strResName)
    {
    	// 创建文件
    	HANDLE hFile = ::CreateFile(strDstFile, GENERIC_WRITE, NULL, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_TEMPORARY, NULL);
    	if (hFile == INVALID_HANDLE_VALUE)
    		return false;
    	
    	// 查找资源文件中、加载资源到内存、得到资源大小
    	HRSRC	hRes	= ::FindResource(NULL, strResName, strResType);
    	HGLOBAL	hMem	= ::LoadResource(NULL, hRes);
    	DWORD	dwSize	= ::SizeofResource(NULL, hRes);
    	
    	// 写入文件
    	DWORD dwWrite = 0;  	// 返回写入字节
    	::WriteFile(hFile, hMem, dwSize, &dwWrite, NULL);
    	::CloseHandle(hFile);
    	
    	return true;
    }
    
    void main(void)
    {
    	initgraph(500, 470);
    	//play music;	
    	TCHAR tmpmp3[_MAX_PATH];	// 产生临时文件的文件名
    	::GetTempPath(_MAX_PATH, tmpmp3);
    	_tcscat(tmpmp3, _T("happy_temp.mp3"));	
    	ExtractResource(tmpmp3, _T("MP3"), _T("happy.mp3"));	// 将 MP3 资源提取为临时文件
    	TCHAR mcicmd[300];
    	_stprintf(mcicmd, _T("open \"%s\" alias music"), tmpmp3);
    	mciSendString(mcicmd, NULL, 0, NULL);	
    	mciSendString(_T("play music repeat"), NULL, 0, NULL);
    
    	//loadimage(NULL, "image", "image", 500, 470,true);
    	//system("pause");
    	//clearrectangle(0, 0, 500, 470);
    	loadimage(NULL, "backgroud", "bak", 500, 470, true);
    	//system("pause");
    	setcolor(0x231f20);
    	Drawdail();
    	setwritemode(R2_XORPEN);
    	SYSTEMTIME T;
    	while(!kbhit())
    	{
    		GetLocalTime(&T);
    		DrawHand(T.wHour, T.wMinute, T.wSecond);
    		Sleep(1000);
    		DrawHand(T.wHour, T.wMinute, T.wSecond);
    	}
    
    	// 停止播放并关闭音乐
    	mciSendString(_T("stop mymusic"), NULL, 0, NULL);
    	mciSendString(_T("close mymusic"), NULL, 0, NULL);	
    	// 删除临时文件
    	DeleteFile(tmpmp3);
    	closegraph();
    }


    exe程序下载:http://download.csdn.net/detail/guangxyou/5328184

  • 相关阅读:
    Python笔试题(递归)
    MYSQL经典面试题
    Linux常用命令
    HTTP协议相关面试题
    Flask面试题
    史上最全DVWA 笔记
    ssh root Permission denied
    odoo Reference 选择model 然后选择record
    定体, 定压, 定温, 绝热 Q E A 公式
    Vmware Bluetooth
  • 原文地址:https://www.cnblogs.com/java20130726/p/3218678.html
Copyright © 2020-2023  润新知