Programming 版 (精华区)

发信人: JJason (C++ Primer), 信区: Programming
标  题: [合集]help: 不用opengl 如何利用颜色渐变来表现立体感
发信站: 哈工大紫丁香 (2002年11月19日10:35:59 星期二), 站内信件


────────────────────────────────────────
 sweeting (仙人不闲)                  于 2001年09月17日19:54:24 星期一 说道:

我想在vc中,利用颜色的渐变来表现立体感
谁会,教教
比如如何把一个圆利用颜色的渐变来表现一个球

────────────────────────────────────────
 ssos (存在与虚无·戒酒戒网)          于 2001年09月17日19:59:17 星期一 说道:

faint
那可很麻烦呀
图书馆有一本书上有源代码
好像叫什么"计算机图形学与应用"什么的
还有一本"真实感图象生成"讲的比较仔细
学府有卖的

────────────────────────────────────────
 sweeting (仙人不闲)                  于 2001年09月17日20:08:43 星期一 说道:

真的很麻烦码?
我也好像在那里见过,所以想应用一下
我只需要静止的按说不会太难吧

────────────────────────────────────────
 ssos (存在与虚无·戒酒戒网)          于 2001年09月17日20:14:53 星期一 说道:

程序好像不多,但是对于每一个点的RGB值都要计算一次
有一个根据光照方向形成RGB值的公式

────────────────────────────────────────
 sweeting (仙人不闲)                  于 2001年09月17日20:22:35 星期一 说道:

朋友给我一段程序一块看:
void CSphereView::OnDraw(CDC* pDC)
{
    CSphereDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    // TODO: add draw code for native data here
pDC->SelectStockObject(NULL_PEN);
COLORREF color=pDoc->m_color;
BYTE byRed=GetRValue(color);
BYTE byGreen=GetGValue(color);
BYTE byBlue=GetBValue(color);
//get the size of the view window
CRect rect;
GetClientRect(&rect);
int nUnits=min(rect.right,rect.bottom);
float fltStepHorz=(float)rect.right/nUnits;
float fltStepVert=(float)rect.bottom/nUnits;
int nEllipse=nUnits/3;
int nIndex;
CBrush brush;
CBrush *pBrushOld;
for(nIndex=0;nIndex<=nEllipse;nIndex++)
{
    brush.CreateSolidBrush(RGB(((nIndex*byRed)/nEllipse),
        ((nIndex*byGreen)/nEllipse),((nIndex*byBlue)/nEllipse)));
    pBrushOld=pDC->SelectObject(&brush);
pDC->Ellipse(fltStepHorz*nIndex*2,fltStepVert*nIndex,rect.
right-fltStepHorz*nIndex+1,
             rect.bottom-(fltStepVert*nIndex*2)+1);
pDC->SelectObject(pBrushOld);
brush.DeleteObject();
}
}

────────────────────────────────────────
 ssos (存在与虚无·戒酒戒网)          于 2001年09月17日20:27:09 星期一 说道:

你试过没有
我看应当生成的是一个颜色渐变的球

────────────────────────────────────────
 ssos (存在与虚无·戒酒戒网)          于 2001年09月17日20:34:40 星期一 说道:

我刚刚试过是一个从内到外颜色逐渐变深的球
看起来能够模拟一种角度的光照

────────────────────────────────────────
 sweeting (仙人不闲)                  于 2001年09月17日20:34:55 星期一 说道:

试过了,是颜色渐变的球,不过由于他一开始先画了一个黑圆
所以最终这个球的边缘是黑色的,稍微难看点

────────────────────────────────────────
 sweeting (仙人不闲)                  于 2001年09月17日20:35:45 星期一 说道:

速度很快亚

────────────────────────────────────────
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.029毫秒