|
#define _CRT_SECURE_NO_WARNINGS //宏定义
#include<stdio.h>
#include<graphics.h>
#include<math.h>
#include<mmsystem.h>
#pragma comment(lib,"winmm.lib")//静态库资源
IMAGE backImg; //存放背景
IMAGE girlBig[20]; //存放20张大图片
IMAGE girlSmall[20]; //存放20张小图片
int smallNum = 0; //从第0张开始,记录翻看照片的页码
void loadResource()
{
mciSendString("open Promise.mp3 alias music", 0, 0, 0);
mciSendString("play music repeat", 0, 0, 0);
loadimage(&backImg, "6.gif");
for (int i = 0; i < 21; i++)
{
char fileName[21] = "";
//0.jpg 1.jpg 2.jpg 3.jpg 4.jpg 5.jpg ....
sprintf(fileName, "%d.jpg", i);
loadimage(girlBig+i,fileName,420,350);
loadimage(girlSmall+i,fileName,150,150);
}
}
void drawButton(int x,int y,char postion) // L <--- ---> R
{
setfillcolor(RED);//设置填充实心圆颜色
solidcircle(x, y, 17);//以x,y为圆心坐标,半径为17mm的圆
setlinecolor(WHITE);//设置线体颜色
setlinestyle(PS_SOLID, 3, 0);//设置线的格式
if (postion =='r')
{
circle(x, y, 12);
line(x - 10, y, x + 10, y);
line(x - 1, y - 7, x + 10, y);
line(x - 1, y + 7, x + 10, y);
}
else if (postion =='l')
{
circle(x, y, 12);
line(x - 10, y , x + 10, y);
line(x - 10, y , x + 1, y-7);
line(x - 10, y , x + 1, y+7);
}
}
void drawMap()
{
//画背景
putimage(0, 0, &backImg);
//画小图,第0张和第1张
putimage(67,135,girlSmall+0);
putimage(67,305,girlSmall+1);
//画大图
putimage(269,100,girlBig+0);
//画按钮
drawButton(180, 112, 'r');//右边按钮
drawButton(110, 112, 'l');//左边按钮
//写文字
settextcolor(BLUE);//设置文字颜色为蓝色
settextstyle(25, 0, "Inkfree");//设置字体大小与字体规格形式
setbkmode(TRANSPARENT);//去除文字背景,设置背景为透明
outtextxy(350, 50, "Hello Word,Grateful");//字体内容和位置
}
void clickButtuon(int x, int y, char postion)//鼠标点击位置及方向
{
setfillcolor(RED);//设置填充实心圆颜色
solidcircle(x, y, 17);//以x,y为圆心坐标,半径为17mm的圆
setlinecolor(GREEN);//设置线体颜色
setlinestyle(PS_SOLID, 3, 0);//设置线的格式
if (postion == 'r')
{
circle(x, y, 12);
line(x - 10, y, x + 10, y);
line(x - 1, y - 7, x + 10, y);
line(x - 1, y + 7, x + 10, y);
}
else if (postion == 'l')
{
circle(x, y, 12);
line(x - 10, y, x + 10, y);
line(x - 10, y, x + 1, y - 7);
line(x - 10, y, x + 1, y + 7);
}
}
void drawRect(int flag)
{
if (flag == 1)
{
setlinecolor(BLUE);
//画小图,第0张
rectangle(67-3,135-3,67+150+3,135+150+3);//第0张图片矩形
setlinecolor(WHITE);
rectangle(67 - 3, 305 - 3, 67 + 150 + 3, 305 + 150 + 3);//第1张图片矩形
}
else if (flag == 2)
{
setlinecolor(BLUE);
//画小图,第1张
rectangle(67 - 3, 305 - 3, 67 + 150 + 3, 305 + 150 + 3);//第1张图片矩形
setlinecolor(WHITE);
rectangle(67 - 3, 135 - 3, 67 + 150 + 3, 135 + 150 + 3);
}
}
void userMoveMouse()
{
MOUSEMSG m;
int flag = 1;
while (1)
{
m = GetMouseMsg();
switch (m.uMsg)
{
case WM_MOUSEMOVE://鼠标移动时
//鼠标是否在按钮上:判断鼠标是否在圆内,用圆的标准方程计算
if (sqrt((double)(m.x - 180)*(m.x - 180) + (m.y - 112)*(m.y - 112))<17)//右边
{
clickButtuon(180, 112, 'r');
}
else if (sqrt((double)(m.x - 110)*(m.x - 110) + (m.y - 112)*(m.y - 112))<17)//左边
{
clickButtuon(110, 112, 'l');
}
else
{
drawButton(180, 112, 'r');//右边按钮
drawButton(110, 112, 'l');//左边按钮
}
break;
case WM_LBUTTONDOWN://鼠标左键按动时
if (sqrt((double)(m.x - 180)*(m.x - 180) + (m.y - 112)*(m.y - 112)) < 17)//右边
{
drawRect(flag);
//putimage(269,100,girlBig+0);大照片坐标位置
if (smallNum==20)//当图片全部放完,循环一次
{
putimage(67, 135, girlSmall + 0);//显示小照片第0张
putimage(67, 305, girlSmall + 1);//显示小照片第1张
smallNum = 0;
}
else if (smallNum == 2)
{
putimage(67, 135, girlSmall + 2);//显示小照片第2张
putimage(67, 305, girlSmall + 3);//显示小照片第3张
}
else if (smallNum == 4)
{
putimage(67, 135, girlSmall + 4);//显示小照片第4张
putimage(67, 305, girlSmall + 5);//显示小照片第5张
}
else if (smallNum == 6)
{
putimage(67, 135, girlSmall + 6);//显示小照片第6张
putimage(67, 305, girlSmall + 7);//显示小照片第7张
}
else if (smallNum == 8)
{
putimage(67, 135, girlSmall + 8);//显示小照片第8张
putimage(67, 305, girlSmall + 9);//显示小照片第9张
}
else if (smallNum == 10)
{
putimage(67, 135, girlSmall + 10);//显示小照片第10张
putimage(67, 305, girlSmall + 11);//显示小照片第11张
}
else if (smallNum == 12)
{
putimage(67, 135, girlSmall + 12);//显示小照片第12张
putimage(67, 305, girlSmall + 13);//显示小照片第13张
}
else if (smallNum == 14)
{
putimage(67, 135, girlSmall + 14);//显示小照片第14张
putimage(67, 305, girlSmall + 15);//显示小照片第15张
}
else if (smallNum == 16)
{
putimage(67, 135, girlSmall + 16);//显示小照片第16张
putimage(67, 305, girlSmall + 17);//显示小照片第17张
}
else if (smallNum == 18)
{
putimage(67, 135, girlSmall + 18);//显示小照片第18张
putimage(67, 305, girlSmall + 19);//显示小照片第19张
}
putimage(269, 100, girlBig + smallNum);
smallNum++;
}
else if (sqrt((double)(m.x - 110)*(m.x - 110) + (m.y - 112)*(m.y - 112)) < 17)//左边
{
drawRect(flag);
//按钮往左后退,按第一次小图片篮筐选中第0张,小图片栏显示第0张和第1张小图片,大图片对应选中的篮筐小图片第0张
再往后退一次,按第2次 小图片篮筐选中第19张,小图片栏显示第19张/第0张,大图片对应选中的篮筐小图片第19张
按第3次小图片篮筐选中第18张,小图片栏显示第18张/第19张,大图片对应选中的篮筐小图片第18张
...
...
...
按第21次小图片篮筐选中第0张,小图片栏显示第0张/第1张,大图片对应选中的篮筐小图片第0张 (循环)
}
flag++;
if (flag == 3)
flag = 1;
break;
}
}
}
int main()
{
initgraph(932, 538);
loadResource();
drawMap();
userMoveMouse();
getchar();
closegraph();
return 0;
} |
上一篇: WSAAsyncSelect模型接收数组包的问题下一篇: 如何用CString写到文件呢
|