燃烧你窗口的边缘,赋予它们特色






4.92/5 (11投票s)
不,这不是一个笔误
目录
介绍
你是否厌倦了闪亮、一尘不染的窗口?厌倦了所有那些充满未来感的玻璃?你是否更希望你的窗口拥有经典、老旧、略微烧焦边缘的老式历史文献外观?你知道,那种背面可能写着埋藏的宝藏地图的类型?嗯,答案就在这里!通过现代技术的奇迹,你可以从这个
甚至(哇),这个
到...(请敲鼓)这个
尼古拉斯·凯奇很快就会密谋偷走你的窗户。
现在你已经看到了通过烧毁普通的矩形窗口边缘可以完成的事情。从异形窗口区域开始,可以获得更惊人的结果。例如,这个完全无聊的窗口
打哈欠。但在仅仅几次应用专利*窗口燃烧编码技术后,你将到达这个奇妙的图像
WMP 9 如果不是因为它已停止服务,会很羡慕的。
*实际上没有专利
告诉我更多。拜托,老兄。说出来。它是如何完成的?
每隔几年,微软科学家就会重新发现并使用一种长期休眠的技术。在 Windows 95 中,它是所有者绘制的菜单。在 Windows 98 中,它是 FlashWindow()
。在 Windows XP 中,它是窗口区域。这些进步甚至超过了我们学习新 SI 前缀的需求,因为我们的硬盘越来越大(给女士们留下深刻印象的热门提示:在tera-之后是peta-)。
现在,在 2008 年,我发现了...
旋转区域
ExtCreateRegion()
API 可以使用 RGNDATA
blob 调用一个区域。神奇之处在于 XFORM
参数。用适当培养的 XFORM
咒语成分来沾染你的代码,ExtCreateRegion()
也会旋转该区域。
例如,从原始区域 rgn
开始,我们可以创建一个旋转 30 度的副本,使用以下咒语
int degrees = 30; float radians = degrees * 2.0f * 3.14159f / 360.0f; XFORM xform = { cosf(radians), sinf(radians), -sinf(radians), cos(radians) }; RGNDATA* pData; UINT cby; CRgnHandle rgn = /* original region */; CRgn newRgn; // Get the RGNDATA for the original region. cby = rgn.GetRegionData ( NULL, 0 ); pData = (RGNDATA*) new BYTE[cby]; rgn.GetRegionData ( pData, cby ); // CreateFromData() calls ExtCreateRegion(). newRgn.CreateFromData ( &xform, cby, pData ); delete[] (BYTE*) pData;
XFORM
的成员在 Microsoft 开发人员网络之书 中概述。当使用 XFORM
执行旋转时(正如我们所做的那样),前四个成员设置如下
eM11
:旋转角的余弦
eM12
:旋转角的正弦
eM21
:旋转角正弦的负数
eM22
:旋转角的余弦
为了实现烧毁效果,只需重复多次将旋转应用于你的窗口区域,随意旋转多少次都行。让舍入误差完成剩下的工作!
结论
祝你一年中的第 92 天快乐!(或非闰年的第 91 天!)