3D效果的实现
ydzqw 2004-07-13 02:21:49 想实现3D的按钮,有几个问题想请教大家。
其实3D的按钮实现起来也是2D的,只不过在边缘有些颜色的差异,周围加上一些阴影效果,使人眼看起来象3D的。例如我写的一个简单的例子:
CRect rect;
rect.left = 50;
rect.right = 350;
rect.top = 50;
rect.bottom = 170;
for(int i = rect.left; i < rect.right; ++i)
{
for(int j = rect.top; j < rect.bottom; ++j)
{
POINT pi;
pi.x = i;
pi.y = j;
COLORREF cr; //0x00bbggrr;
if(j == rect.top)
{
cr = RGB(0xFF, 0xFF, 0x06);
}
else if( (i < rect.left + 1) || (i > rect.right - 2)
|| (j < rect.top + 1) || (j > rect.bottom - 2) )
{
cr = RGB(0xFF, 0xAE, 0x09);
}
else
{
cr = RGB(0xFF, 0xFF - j, 0x06);
}
//#FFEB59
//
dc.SetPixel(pi, cr);
}
}
呵,我的例子只是一个很简单的实现,其实应用中要做成一个算法,把光源、基色、阴影色、形状大小等作为参数,这样才通用。
我想问的问题就是哪有相关的算法?(呵,能有Open Source的最好了)
二:我是用RGB来描述的,是否用HSV来描述实现起来会简单些?
=================================================================
有些朋友可能说有DirectX或OpenGL的算法,可我是在嵌入式的环境应用,一切都要自己写,根本没什么lib。