VC开发圣诞程序雪花飞舞的世界

c++下实现异形窗口(上方只显示文字其他区域穿透,下方半透明) 功能有俩个,一个透明背景,一个是上方文字处镂空(文字显示,其他空白处不显示,见下图)           //上方文字处理 void OperationHollowOutCharacters() { // CRect rectCharacters(0, 0, Dialog_Width, HollowOutCharachers_Height); // if (!m_h 阅读详情

又到一年圣诞。为了烘托气氛。在两天前。写了个圣诞的小程序。

首先这个程序用到比较多的知识点

众所周知。一般情况下在MFC类库里进行png的贴图都有点麻烦

因为MFC一般用bmp格式的贴图。

于是我采用GDI的贴图形式贴png图

采用分层窗口,透明处理,以及鼠标穿透来使窗口透明,界面变到桌面

本来可以采用定时器来进行雪花的时间设定。但是为了更好的控制。我采用了一条线程来处理

自设一个Image类来存储所有图像 并采用msdn上的一段代码使png图片封装到资源。以IDX_的形式调用

采用静态链接库。封装GDI的图像库。

CDC *pDCDst=this->GetDC();
	CDC dcSrc;
	dcSrc.CreateCompatibleDC(pDCDst);
	CBitmap bmp;
	bmp.CreateCompatibleBitmap(pDCDst,cx,cy);
	dcSrc.SelectObject(&bmp);

	//用GDI+显示PNG图片
	Graphics _Graphics(dcSrc.m_hDC);
	if(limit<100)
	{
		_Graphics.DrawImage(myimage._pPic01,600,300,myimage._pPic01->GetWidth(),myimage._pPic01->GetHeight());
	}
	else if(limit>=100&&limit<200)
	{
		_Graphics.DrawImage(myimage._pPic02,600,300,myimage._pPic02->GetWidth(),myimage._pPic02->GetHeight());
	}
	for(int i=0;i<m_SnowCount;i++)
	{
		int nNewWidth=0;
	        int nNewHeight=0;
		Gdiplus::Image* pNewImage;
		switch(m_SnowArray[i].style)
		{
		case 1:pNewImage=ImageRotate(myimage._pSnow01,nNewWidth,nNewHeight,m_SnowArray[i].Angle);break;
		  case 2:pNewImage=ImageRotate(myimage._pSnow02,nNewWidth,nNewHeight,m_SnowArray[i].Angle);break;
		  case 3:pNewImage=ImageRotate(myimage._pSnow03,nNewWidth,nNewHeight,m_SnowArray[i].Angle);break;
		  case 4:pNewImage=ImageRotate(myimage._pSnow04,nNewWidth,nNewHeight,m_SnowArray[i].Angle);break;
		  case 5:pNewImage=ImageRotate(myimage._pSnow05,nNewWidth,nNewHeight,m_SnowArray[i].Angle);break;
		  case 6:pNewImage=ImageRotate(myimage._pSnow06,nNewWidth,nNewHeight,m_SnowArray[i].Angle);break;
		  default:break;
		}
		_Graphics.DrawImage(pNewImage,m_SnowArray[i].p.x,m_SnowArray[i].p.y,nNewWidth,nNewHeight);
		
		delete pNewImage;
	}
	BLENDFUNCTION _Blend;   
	_Blend.BlendOp=0;
	_Blend.BlendFlags=0;
	_Blend.AlphaFormat=1;
	_Blend.SourceConstantAlpha=255;

	//鼠标穿透窗体Alpha为0区域
	UpdateLayeredWindow(pDCDst,&CPoint(0,0),&CSize(cx,cy),&dcSrc,&CPoint(0,0),0,&_Blend,ULW_ALPHA);

	bmp.DeleteObject();
	dcSrc.DeleteDC();
	_Graphics.ReleaseHDC(dcSrc.m_hDC);
	this->ReleaseDC(pDCDst);
	if(limit<300)
	{
	  limit++;
	}
这段代码是贴图的主要代码。

最后的效果如下


首先产生的奇迹冬瓜logo透明



接着logo消失 变成祝福语 雪花小范围飘落



接着雪花变得密集

以下是源代码的免积分下载地址

点击打开链接

非常经典的飘雪屏保非常经典的飘雪屏保 非常经典的飘雪屏保 极其逼真的雪花满屏飞舞 放在WINDOWS目录下即可使用 立即下载

相关推荐

【VS2010版】漫天飞舞的雪花demo

博文的配套源码 《 【Visual C++】游戏开发笔记二十二 游戏基础物理建模(四) 粒子系统模拟(一)》 ,文章地址为http://blog.youkuaiyun.com/zhmxy555/article/details/7585937, 此为VS2010版,另还有VC6.0版提供下载。 源码编译环境为VS2010.其实VS2005,VS2008也可以编译运行,具体方法可以进我博客查看相关文章 我的博客地址是http://blog.youkuaiyun.com/zhmxy555,源码结合我的文章一起看效果更佳。 应大家要求,从本节文章开始,以后浅墨提供的文章配套源码都将分为VC6.0和VS2010两个版本,以方便使用不同版本IDE的朋友们进行学习提高。当然,必须是0资源分下载~~~~~~~~ 希望能和大家一起交流,共同学习,共同进步。

C# 实现 Snowflake算法

使用UUID或者GUID产生的ID没有规则 Snowflake算法是Twitter的工程师为实现递增而不重复的ID实现的 从图上看除了第一位不可用之外其它三组均可浮动站位,据说前41位就可以支撑到2082年,10位的可支持1023台机器,最后12位序列号可以在1毫秒内产生4095个自增的ID。 在多线程中使用要加锁。 /// /// 动态生产有规律的I

飞哥的专栏 1万+

C#雪花效果

C#.net实现的雪花飞舞效果

C++混乱编程?“可可爱爱”的圣诞树代码

用爱心形状的混乱代码输出一颗圣诞树,这究竟是怎么做到的?这一切的背后究竟是程序的泯灭还是代码的沦丧?欢迎收看来自深渊六层的代码。

qq_42761323的博客 8188

雪花屏保Nord-Tec Snow Flakes

屏幕上会有好多好多的雪花哦。。而且还会积累在图标和文件框框上哦。。具体怎样要用了才知道!! (把文件放在C:\Windows目录下即可)

vc实现鼠标穿透 最小化托盘 表盘 定时提醒 美化

vc实现鼠标穿透 最小化托盘 表盘 定时提醒等一些列桌面功能,并且自制功能菜单项

C/C++打印圣诞树||秀翻全场!

我们先思考一个问题,如何用C程序输出不同颜色的字体?一般来说,只靠应用程序本身很难达到这个目的,因为运行窗口的管理属于操作系统资源,而应用程序想要使用这些资源就必须通过操作系统提供的接口来实现。为了解决这类问题,微软提供了丰富的Windows API(Application Programming Interface),这些API并不会直接在应用程序中展开,而是以动态链接的形式存在着,在应用程序需要API实现某些功能的时候,才调用相应的动态链接库。

爱编程的鱼的博客 9297

圣诞快乐桌面下雪小程序

圣诞快乐桌面下雪小程序 圣诞快乐桌面下雪小程序 圣诞快乐桌面下雪小程序 圣诞快乐桌面下雪小程序 圣诞快乐桌面下雪小程序 圣诞快乐桌面下雪小程序 圣诞快乐桌面下雪小程序 圣诞快乐桌面下雪小程序

C/C++项目——圣诞节快乐!

C/C++项目——圣诞节快乐!

一个正在学习C/C++的博主 1132

圣诞程序雪花飞舞的世界(VC++)

这事一款烘托圣诞春节气氛的小程序。用vc开发。mfc类库。采用线程。分层窗口。GDI贴图。png图片资源封装。鼠标穿透等思想。祝大家圣诞节快乐。博客地址http://blog.youkuaiyun.com/qjdg_01/article/details/17527657

桌面圣诞雪花

一款很漂亮的程序,雪花效果非常逼真,圣诞送礼首选

黑马程序员之javascript学习笔记:雪花飞舞特效

在页面中有雪花徐徐飘落的特效。 从页面顶部飘下来用字符模拟出来的雪花,非常逼真。 页面雪花效果一般是利用不断改变图层坐标来实现的。 其坐标算法各有千秋,因此涉及到大量运算及图形操作,随着雪片数目的增加,程序的CPU占用将会变得很高,所以因该通过实验,在效果,效率之间做出平衡。 其源代码如下: 雪花飞舞

blog_优快云_xutingzhou 1288

透明的桌面时钟VC++版,源代码

摘要:VC/C++源码,界面编程,桌面时钟,透明窗体  VC++版透明的桌面时钟,附上源代码.可以自定义设置,功能有待完善,编程要点很多。桌面时钟可以显示在任一窗口的顶层,可设置在屏幕上跳动、可以设置时钟的颜色、坐标、字体样式等,还可以设置为鼠标穿透等。

圣诞树代码【c++版普通】

圣诞节

xiaobaobeibixin的博客 3730

数据分析:美团大赛的具体案例制作

在数据集中,存在三个变量的经纬度数据,分别是商家的经纬度数据('sender_lng', 'sender_lat'),顾客的经纬度数据('recipient_lng', 'recipient_lat')和骑手的经纬度数据('grab_lng', 'grab_lat')。根据结果可知,平台订单创建时间的中位数为2022-10-21 02:59:01,平台订单创建时间的众数为2022-10-19 03:29:41、2022-10-23 03:29:47,与直方图相符。接下来,我们对是否为预定订单变量进行分析。

m0_68269346的博客 2501

SpyGlass Lint脚本实战:如何用TCL自动化RTL代码检查(附完整配置模板)

本文详细介绍了如何利用TCL脚本实现SpyGlass Lint工具的自动化RTL代码检查。通过构建模块化、工程化的脚本框架,文章提供了从环境搭建、核心配置、规则定制到豁免管理的完整实战指南,并附有可复用的配置模板,旨在帮助IC设计工程师构建高效、一致的代码质量检查流水线。

weixin_29204205的博客 136

VC++ MFC简单实现鼠标点击穿透窗口

ModifyStyleEx(0,WS_EX_TRANSPARENT); ModifyStyleEx(0, WS_EX_LAYERED); SetLayeredWindowAttributes(NULL, 255, LWA_ALPHA);

喜欢吃一口烤肉的啵啵 3451

MATLAB实战:用ARMAX模型搞定电力系统惯量实时评估(附完整代码)

本文详细介绍了如何利用MATLAB中的ARMAX模型实现电力系统惯量的实时评估。通过系统辨识技术,结合电力系统的动态特性,提供从数据预处理、模型辨识到实时评估的全流程实战指南,并附完整代码。ARMAX模型在新能源高渗透率电网中展现出显著优势,误差较传统方法降低50%以上。

b9c0d的博客 400

VC++实现Windows中双显示器(主屏、扩展屏)各种操作的源码工程

Windows中鼠标右键桌面->“屏幕分辨率”时出现的“更改显示器的外观”对话框下实现了双屏操作的诸多功能,如:主屏的设置、主屏和扩展屏的分辨率、方向、屏幕合并等。实际项目中需要通过VC++代码实现这些功能,用了将近一周的事件,在网上经过几番搜索、整合及改写,终于开发出了所需功能。以下将cpp源码贴出,以弥补此方面网上资料的匮乏。完整工程见下载资源(VS2010下开发)。 // Multi_

phmatthaus的专栏 1万+

EMC系列EtherCAT总线运动控制器(二):Motion通讯连接、总线配置及诊断

雷赛-EMC系列EtherCAT总线运动控制器(二):Motion通讯连接、总线配置及诊断

weixin_38570076的博客 1890

SystemC实战:用C++搞芯片建模的5个典型场景(含代码示例)

本文通过五个典型实战场景,详细介绍了如何使用SystemC这一基于C++的硬件建模库进行芯片设计与系统级建模。内容涵盖从基础并发模块构建、事务级总线建模、跨时钟域验证,到与ModelSim协同仿真及多核系统性能探索,并提供了完整的代码示例,帮助软件工程师利用熟悉的C++工具链高效参与硬件架构设计与验证。

weixin_29191761的博客 316

VC++实现像360安全桌面一样修改桌面背景

具体实现如下,像360安全桌面一样修改桌面背景模仿360的时候要学习360的狼性文化 #include "stdafx.h" #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<urlmon.h> #include<process.h> #include&...

weixin_30800807的博客 278

关于三维全波电磁场仿真软件CST的安装和问题解决

百度网盘链接:https://pan.baidu.com/s/1RgWr8Qau1EzSOlh29SewFQ提取码:fzza这里是2023版本的CST,需要其他版本的uu们可以去官网或者其他人的网盘下载。

weixin_60728441的博客 3620
上一篇: (奇迹冬瓜)坦克大战[MFC框架]
下一篇: GDI VC++重绘控件做的音乐播放器
utral董东东
博客等级 码龄16年 158粉丝 33原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值