首页 > 其他分享 >九月十九日(舔狗代码)

九月十九日(舔狗代码)

时间:2023-09-19 23:01:47浏览次数:37  
标签:img int win 代码 back2 back1 void 十九日 九月

#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中进行抠图。

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

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

 

   

标签:img,int,win,代码,back2,back1,void,十九日,九月
From: https://www.cnblogs.com/youxiandechilun/p/17716084.html

相关文章

  • HNU结对编程之队友代码互评
    一、前言在本次互评中,我有幸审阅了zjx同学的项目。zjx同学的代码风格严谨,对于代码规范的遵循和对于项目需求的理解都让人印象深刻。以下是我对他的项目的评价和建议。 二、测试1.黑盒测试我首先进行了黑盒测试,也就是从用户的角度,不考虑程序内部结构和属性,只关注程序的输入......
  • 使用策略模式优化你的代码
    策略模式简介策略模式(StrategyPattern:Defineafamilyofalgorithms,encapsulateeachone,andmaketheminterchangeable.)中文解释为:定义一组算法,然后将这些算法封装起来,以便它们之间可以互换,属于一种对象行为型模式。总的来说策略模式是一种比较简单的模式,听起来可能有点费......
  • 个人项目互评代码分析
    个人项目互评代码分析软件2105-刘一凡在看完金颖希同学的代码后,我有了一些看法与建议,在这篇博客中将对她的代码进行分析,并提出一些建议性的优化方案。个人拙见,希望能为项目的进一步改进提供一些思路。整体结构:代码结构相对清晰,分为数学题生成器和用户两部分,其中每个数学题生成......
  • 3种 Springboot 全局时间格式化方式,别再写重复代码了
    From: https://developer.aliyun.com/article/771395简介: 别再写重复代码了本文收录在个人博客:www.chengxy-nds.top,技术资料共享,同进步时间格式化在项目中使用频率是非常高的,当我们的 API 接口返回结果,需要对其中某一个 date 字段属性进行特殊的格式化处理,通常会用到......
  • Jest 匹配器:简化测试代码,提高测试效率
    Jest匹配器在软件开发中,测试是一个非常重要的环节。而在JavaScript开发中,Jest是一个非常流行的测试框架。Jest提供了丰富的功能和工具,其中的匹配器(Matchers)是其中之一。匹配器可以帮助我们编写更简洁、更高效的测试代码。本文将介绍Jest匹配器的使用方法和一些常用的匹配器......
  • 为什么 Python 代码在函数中运行得更快?
    哈喽大家好,我是咸鱼当谈到编程效率和性能优化时,Python常常被调侃为“慢如蜗牛”有趣的是,Python代码在函数中运行往往比在全局范围内运行要快得多小伙伴们可能会有这个疑问:为什么在函数中运行的Python代码速度更快?今天这篇文章将会解答大家心中的疑惑原文链接:https://stac......
  • java代码中 两种路径符号的写法
    java代码中两种路径符号的写法Stringpath="D:\\新建文件夹\\2.png"; Filefile=newFile(path); System.out.println(file.exists()); Stringpath1="D:/新建文件夹/2.png"; Filefile1=newFile(path); System.out.println(file1.getAbsolutePath()); Sys......
  • 四千行代码写的桌面操作系统GrapeOS完整代码开源了
    简介学习操作系统原理最好的方法是自己写一个简单的操作系统。GrapeOS是一个非常简单的x86多任务桌面操作系统,源代码只有四千行,非常适合用来学习操作系统原理。源码地址:https://gitee.com/jackchengyujia/grapeos视频教程地址:https://www.bilibili.com/video/BV1nv4y1b7Nj/课......
  • 开发微信支付C/C++代码
     抄自:  https://zhuanlan.zhihu.com/p/606909332?utm_id=0 在QtC++中实现微信收费使用功能需要借助微信开放平台提供的API接口,具体步骤如下:注册微信开放平台账号,并创建应用。在创建应用时,需要选择相应的应用类型(如网页应用、移动应用等)和使用场景(如公众号、小程序等),并......
  • python 如何将不完全连续的整数序列按[1-5,6,8-10]的格式输出,给出函数代码
    python如何将不完全连续的整数序列按[1-5,6,8-10]的格式输出,给出函数代码defformat_integer_sequence(seq):formatted_seq=[]start=Noneend=Nonefornuminsorted(seq):ifstartisNone:start=numend=num......