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。
...全文
109 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ydzqw 2004-07-14
  • 打赏
  • 举报
回复
我上面贴的程序是在VC里写的,只是思路,但最终实现要在嵌入式环境实现
ydzqw 2004-07-14
  • 打赏
  • 举报
回复
回复人: lambochan(打杂) ( ) 信誉:100 2004-07-13 20:08:00 得分: 0


不用自己写吧..
CDC::Draw3DRect()


=============================================
可不是在Windows下
另外,程序都是C嵌汇编的,C++可费资源了,所以也有没什么类来用
ydzqw 2004-07-14
  • 打赏
  • 举报
回复
回复人: alphapaopao(炮炮) ( ) 信誉:100 2004-07-13 19:54:00 得分: 0


做按钮,贴一个位图就可以。何必那么麻烦呢


========================================

你一个位图占了我多少资源了,呵呵
sohou 2004-07-13
  • 打赏
  • 举报
回复
本来就是靠人眼的视觉差来搞的嘛!!
lambochan 2004-07-13
  • 打赏
  • 举报
回复
不用自己写吧..
CDC::Draw3DRect()
alphapaopao 2004-07-13
  • 打赏
  • 举报
回复
做按钮,贴一个位图就可以。何必那么麻烦呢
kathywp 2004-07-13
  • 打赏
  • 举报
回复
你看计算机图形学,里面有例子

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧