复古风的窗户设计

是否厌倦了那些光亮如新、毫无瑕疵的窗户?是否对那些充满未来感的玻璃感到乏味?是否更倾向于拥有那种经典、陈旧、边缘略带烧焦痕迹的窗户,就像那些可能写有宝藏地图的古老历史文献一样?现在,通过现代技术的奇迹,可以从这样:

或者甚至是这样:

变成...(请击鼓)这样:

尼古拉斯·凯奇很快就会开始策划如何偷走窗户了。

现在已经看到了通过烧焦一个普通矩形窗户边缘所能做到的事情。如果从一个形状奇特的窗户区域开始,甚至可以获得更惊人的效果。比如这个完全无聊的窗户:

但是,经过几次应用专利*的窗户烧焦编码技术后,将得到这个奇妙的图像:

如果WMP 9没有被淘汰,它一定会羡慕的。

*实际上并没有专利

告诉更多。来吧,伙计。透露一下。这是怎么做到的?

每隔几年,一种长期休眠的技术就会被重新发现,并被微软科学家们利用。在Windows 95中,它是自绘菜单。在Windows 98中,它是FlashWindow()。在Windows XP中,它是窗口区域。

这些进步甚至超过了学习新的SI前缀的需求,因为硬盘越来越大(给女士们留下深刻印象的热门提示:在tera-之后是peta-)。

现在,在2008年,发现了...

旋转区域

ExtCreateRegion() API可以召唤一个区域,而不需要RGNDATA块。魔法来自于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的成员在微软开发者网络的宝典中有概述。当使用XFORM进行旋转时,前四个成员设置如下:

eM11: 旋转角度的余弦值

eM12: 旋转角度的正弦值

eM21: 旋转角度正弦值的负数

eM22: 旋转角度的余弦值

要实现烧焦效果,只需反复对窗口区域应用旋转,频率随意。让舍入误差来完成剩下的工作!

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485