动态相册(未完成)

看C的图形编程时构思的动态相册,有很多部分不知道该怎么去完成,希望你们能给我点建议。

1、创意阶段
利用二维星空的部分代码制作动态相册,循环展示,当鼠标有动作时做出响应
2、规划阶段
利用graphics.h 包含的图形库实现创意,暂定为二维展示
3、周边准备
需要抒情的背景音乐以及简约的背景图,点击鼠标发出的声音
4、
细部准备
初始化Init函数,移动相册Move函数,鼠标动作响应函数

*编程遇到的问题
1、动态初始化字符串
2、相册移动时是利用清屏还是重绘,如果是重绘的话,背景要求色调单一
为什么异或对载入图像没用
3、鼠标经过响应,鼠标移走也要响应,鼠标点击响应,再点击应回到原来的画面,或者是点击时打开新的窗口,这样的话简单点
4、需要不断检测鼠标的坐标,如果在img[i]范围内的话改变img[i]的尺寸

 

// 动态相册.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "graphics.h"
#include "time.h"
#include "conio.h"

#define MAXPHOTO 10//预设相册的照片数为10

struct PHOTO
{
	int x;
	int y;
	float step;
}photo[MAXPHOTO];//定义照片的结构体

void InitPhoto(int i)
{
	photo[i].x=0;
	photo[i].y=250;
	photo[i].step=2;	
}
//初始化照片
void MovePhoto(int i,IMAGE img[])
{

	putimage(photo[i].x,photo[i].y,&img[i]);
	Sleep(10);
	setfillstyle(BLACK);
	bar(photo[i].x,photo[i].y,photo[i].x+135,photo[i].y+128);//利用覆盖的技术实现动画效果
	photo[i].x+=(int)photo[i].step;
	moveto(photo[i].x,photo[i].y);//使光标移至下一个位置
	putimage(photo[i].x,photo[i].y,&img[i]);
}
//捕获鼠标点击对象的信息
void ClickLeft(int i,IMAGE img[])
{
	Resize(&img[i],300,193);//当鼠标点击照片时,照片的尺寸放大(暂时没有考虑模糊)
}

void main ()
{
	int i;
	IMAGE img[MAXPHOTO];
	MOUSEMSG m;
	//图形模式
	initgraph(500,500);

	loadimage(&img[0],"D:\\Tile1.bmp");
	loadimage(&img[1],"D:\\Tile2.bmp");	//初始化所有img[i]和photo[i]
	for(i=0;i<MAXPHOTO;i++)
	{
		InitPhoto(i);
	}
	while(true)
	{
		m = GetMouseMsg();
		switch(m.uMsg)
		{
		case  WM_LBUTTONDOWN:

		if(m.x>photo[0].x &&m.x<photo[0].x+135 && m.y>photo[0].y && m.y<photo[0].y+128)
		//照片的尺寸范围为
			ClickLeft(0,&img[0]);//假设左键单击第一张照片才会响应
			break;
		}
		for(i=0;i<MAXPHOTO;i++)
			MovePhoto(i,&img[i]);//移动照片
		if(photo[i].x>500)
			InitPhoto(i);

	}
	closegraph();

}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值