关于渐变效果

foring 2007-02-04 11:13:53
很喜欢vs2005和office2003里面的工具栏颜色配置,看起来他的那个颜色是有渐变效果的,我知道用gdi+可以很方便绘制渐变效果,但是要想得到类似office2003中的那种效果应该怎么弄呢?? 我对界面编程不是很行,那位大哥大姐知道的能不能给的提示,比如说在gdi+中如何去实现这样的渐变,渐变的梯度应该是如何设置的。我用photoshop来看RGB,怎么都找不准
...全文
390 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
foring 2007-02-06
  • 打赏
  • 举报
回复
to: mynamelj(夏娃的诱惑)
谢谢你提供的代码,我看了效果了,正是我想要的,再次感谢
昊叔 2007-02-05
  • 打赏
  • 举报
回复
GDI中有函数的
CharlesPrince 2007-02-05
  • 打赏
  • 举报
回复
需要一些颜色方面的知识:
几种方法:
GDI
使用一个循环,使用一个连续变化的颜色和FillRect方法来填充一个移动Rect区域,但需要你对颜色有很好的把握

GradientFill函数,这个函数不太好操作。

GDI+
class LinearGradientBrush生成一个渐变画刷。
foring 2007-02-05
  • 打赏
  • 举报
回复
我知道是那个函数,也知道怎么用GDI+,但是我画出来的渐变效果很不好,主要是参数设置的问题,没有人知道具体点的么,我画出来的渐变很单调,完全没有那种凸起的感觉,我想office应该不是用的贴图吧
DentistryDoctor 2007-02-05
  • 打赏
  • 举报
回复
GDI+:Gradient, Brush/Pen
GDI:GradientFill

& so so.

More information? MSDN!
dazedase 2007-02-05
  • 打赏
  • 举报
回复
你可以使用BCGControlBar,很容易实现vs2005和office2003的界面样式
cleverwyq 2007-02-05
  • 打赏
  • 举报
回复
直接贴图上去,想怎么样子就怎么样
qoozone1234 2007-02-05
  • 打赏
  • 举报
回复
使用QT库,基本可以让你很容易就完整了。
东文-桑晨 2007-02-05
  • 打赏
  • 举报
回复
GDI+:Gradient, Brush/Pen
GDI:GradientFill
mynamelj 2007-02-05
  • 打赏
  • 举报
回复
BOOL GradientFillFast(CDC* pDCDest, LPRECT lpRect, COLORREF crFrom, COLORREF crTo, BOOL bHorz)
{
TRIVERTEX vert[2];
vert[0].x = lpRect->left;
vert[0].y = lpRect->top;
vert[0].Red = GetRValue(crFrom) << 8;
vert[0].Green = GetGValue(crFrom) << 8;
vert[0].Blue = GetBValue(crFrom) << 8;
vert[0].Alpha = 0x0000;

vert[1].x = lpRect->right;
vert[1].y = lpRect->bottom;
vert[1].Red = GetRValue(crTo) << 8;
vert[1].Green = GetGValue(crTo) << 8;
vert[1].Blue = GetBValue(crTo) << 8;
vert[1].Alpha = 0x0000;
GRADIENT_RECT gRect = { 0, 1 };

return GradientFill(pDCDest->GetSafeHdc(), vert, 2, &gRect, 1, bHorz ? GRADIENT_FILL_RECT_H : GRADIENT_FILL_RECT_V);
}
foring 2007-02-05
  • 打赏
  • 举报
回复
to : CharlesPrince
我就是对颜色不感冒啊,所以才看看大家有没有做过,绘制渐变的方法我知道,关键就是这个颜色的把握上,我很迟钝

15,979

社区成员

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

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