2020.10.15 第十一课 表白心形以及打包

表白程序

1.结构体数组

一个心形 找到了46个点,一个点可以用一个变量存储

那么多个点需要用结构体数组

struct MyPoint{
    int x;
    int y;
};
int main{
    MyPoint Pos[46]={xxxxx...};//创建了一个点数组
    return 0;
}

2.图片

//贴图三部曲

//批量加载图片
IMAGE img[10];
char str[128];
for (int i = 0; i < 10; i++) {
	sprintf(str, "image\\%d.jpg", i + 1);//printf("%s\n", str);
	loadimage(&img[i] ,str,30, 30);
	}

//将图片按各个点显示,拼出心形
for (int i=0;i<46;i++){
putimage(Pos[i].x,Pos[i].y,&img[i%10]);
    Sleep(100);
}

3.使图片逐个移动

#include<stdio.h>
#include<windows.h>
int main(){
    int arr[5]={10,20,30,40,50};
    int add=0;
    while(1){
        for(int i=0;i<5;i++){
            printf("%d\t",arr[(i+add)%5]);
        }
        printf("\n");
        add++;
        Sleep(500);
    }
    return 0;
}
//使图片逐步动
	int add = 0;
	while (1) {
	
		cleardevice();
		
		for (int i = 0; i < 46; i++) {
			putimage(Pos[i].x, Pos[i].y, &img[(i + add) % 10]);
			
		}
		add++;
		putimage(243, 326, &img_big[(add-1) % 10]);
	
		
			Sleep(1000);
	}

4.封装打包(多文件联合编程)

创建一个MyLove.h头文件和MyLove.cpp文件

将头文件,声明放进.h头文件

将自定义函数实现的功能放进.cpp文件(需要加一个#include"MyLove.h")

5.创建图标

项目名->添加->资源->icon

6.导入图片(将图片嵌入exe中)

项目名->添加->资源->Accelerator

就有一个resource.h (宏定义) 查看#define xxxxx

在.cpp中加#include"resource.h"在最前面

loadimage(1)->loadimage(&img,"路径",x,y)

loadimage(2)->loadimage(&img,"图片格式(png)",对应的资源名称,x,y)

对应的资源名称也可以用一个函数MAKEINTRESOURCE(101)(资源转换)

将debug(排除计算机故障)转为release(用于指软件或操作系统的发布)

7.窗体透明

void ShowWnd() {  //Win32APi
//创建窗口
	//创建窗口 宽 高 单位:px 像素
HWND hwnd = initgraph(GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN));
	
//设置窗口风格  去除标题
SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) - WS_CAPTION);

//设置窗口位置
SetWindowPos(hwnd, HWND_TOPMOST, 500, 150, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), SWP_SHOWWINDOW);

//设置为透明 
LONG WindowLong = GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED;

//设置窗口风格
SetWindowLong(hwnd, GWL_EXSTYLE, WindowLong);

//背景修改为黑色
SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), 0, LWA_COLORKEY);
}

8.播放音乐

//SND_RESOURCE 加载资料内容    
//SND_ASYNC 异步播放:就是可以一边播放音乐 一边显示做其它的操作
//MAKEINTRESOURCE(IDR_WAVE1) 播放那个资源				
//SND_LOOP 重复播放
PlaySound(MAKEINTRESOURCE(IDR_WAVE1), NULL, SND_RESOURCE | SND_ASYNC|SND_LOOP);
posted @ 2020-10-19 19:37  鹤儿哈  阅读(139)  评论(0编辑  收藏  举报