[WINAPI]Direct2D爆炸粒子--烟火
本帖最后由 wushaominkk 于 2019-2-15 14:12 编辑这段时间真是玩嗨了,超喜欢爆炸粒子特效。也专门收集了一些例子将其改成C++ & D2D 实现。
将 HTML5 & Canvas & JS 改成 C++ & D2D & Win32API 也不是很简单,有一些奇奇怪怪的问题出现。
本帖的作品又是小冰一个翻写的程序,原来是人家 HTML5 & Canvas & JS 写的。后来也发现了,其实这些东西的思路都是几乎一模一样。
我上次也发过一个烟火的程序,也是D2D。不过那个属性是固定的,而且没有这个怎么好玩,本帖的这个程序可以自定义属性。
本帖的程序中也用到了很多一些小技巧,比如 “利用类成员函数指针做事件委托”,把某个函数或者数据绑定到控件的用户数据区域即可,然后再窗口过程中处理。用到了滑块条、标签、复选框等都是动态创建的,非资源。使用了对象封装,只有一两个全局变量,都是与对象无关的,设计上每个对象独立,可以一个对象只有一个窗口,再带上一个子窗口。
“所以,本帖的程序也具有一定的学习价值。嘻嘻~~~~”
下面就奉上几张图给大家欣赏欣赏吧~~~
程序中也预设了一些属性,更多的玩法儿可以自己探索哟~~~
上点代码凑个字数~~~
/*********************************
* 作者: 小冰哟 *
* *
* 备注: 本程序非原创, *
* 改编他人的程序, *
* 原来的程序是由HTML5编写 *
********************************/
#include "Frwk.hxx"
using D2D1::SizeU;
int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow ) {
HeapSetInformation(nullptr, HeapEnableTerminationOnCorruption, nullptr, 0);
LPTSTR lpszWindowTitle = _T("漂亮吧~~~~");
int ret = 0;
if ( SUCCEEDED(CoInitialize(nullptr)) ) {
Frwk* frwrk = new Frwk(hInstance, SizeU(1024, 768), lpszWindowTitle);
if ( nullptr != frwrk && SUCCEEDED(frwrk->Initialize()) ) {
ret = frwrk->Run(nCmdShow);
delete frwrk;
}
CoUninitialize();
}
return ret;
}
下面是附件,使用之前先阅读一下“说明.txt”.“里面有所有源代码工程以及编译好的二进制可执行文件.”
感谢楼主原创分享……。收藏,
送上小分分和祝福…… 吾爱支持 发表于 2019-2-13 16:14
感谢楼主原创分享……。收藏,
送上小分分和祝福……
蟹蟹大佬鼓励~~~
页:
[1]