九月十九日(舔狗代码)
#include<iostream>
#include<easyx.h>
#include<ctime>
#include <windows.h>
#pragma comment(lib ,"winmm.lib")
#include<mmsystem.h>
using namespace std;
void drawImg_s(int x, int y, IMAGE* img);
void background();
void back1();
void back2();
void music();
//创建窗口
void background()
{
//创建窗口
initgraph(600,900);
cleardevice();
}
//城堡
void back1()
{
//保存图片
IMAGE back1;
//加载图片
loadimage(&back1, _T("back1.png"), 600,900);
//绘制图片
putimage(0, 0, &back1);
}
//生日快乐
void back2()
{
//保存图片
IMAGE back2;
//加载图片
loadimage(&back2, _T("back2.png"),438,176);
//绘制图片
drawImg_s(95, 90, &back2);
}
//透明贴图函数
void drawImg_s(int x, int y, IMAGE* img)
{
DWORD* pwin = GetImageBuffer(); //获取窗口缓冲区指针
DWORD* pimg = GetImageBuffer(img); //获取图片缓冲区指针
int win_w = getwidth();
int win_h = getheight();
int img_w = img->getwidth();
int img_h = img->getheight();
//判断x,y坐标是否超出了窗口范围
int real_w = (x + img_w > win_w) ? win_w - x : img_w; //超出右边界
int real_h = (y + img_h > win_h) ? win_h - y : img_h; //超出下边界
if (x < 0) //超出左边界处理
{
pimg += -x; //让指针向后偏移
real_w -= -x;
x = 0;
}
if (y < 0) //超出上边界处理
{
pimg += (img_w * -y); //让指针向后偏移
real_h -= -y;
y = 0;
}
pwin += (win_w * y + x);
for (int iy = 0; iy < real_h; iy++)
{
for (int ix = 0; ix < real_w; ix++)
{
UCHAR alpha = pimg[ix] >> 24;
if (alpha > 200)//0表示完全透明
{
pwin[ix] = pimg[ix];
}
}
//换到下一行
pwin += win_w;
pimg += img_w;
}
}
//播放声音函数
void music()
{
mciSendString("open 生日快乐.mp3", NULL, 0, NULL);
mciSendString("play 生日快乐.mp3 repeat",NULL, 0, NULL);
}
//死循环 防止闪退
void whiles()
{
while (1)
{
}
}
int main()
{
background();
back1();
back2();
music();
whiles();
}
浅浅学了一下C++的easyx图形库
做了一个生日快乐的祝福


歌曲放不了,可以自己选。这是我挑选的两张图片。文字图片可以先在PS中进行抠图。
如果有需要,也可以用代码中的透明贴图函数来实现抠图
后续还要增加一些内容,不做展示

浙公网安备 33010602011771号