九月十九日(舔狗代码)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#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中进行抠图。

 如果有需要,也可以用代码中的透明贴图函数来实现抠图

 后续还要增加一些内容,不做展示

 

 
posted @   财神给你送元宝  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示