怎样把某个区域填充成渐变色?
问题点数:30、回复次数:15Top
1 楼xming076(虚名)回复于 2002-01-05 13:44:06 得分 0
有没有人会解决这个问题?Top
2 楼explorer007(KKcat)回复于 2002-01-05 14:17:36 得分 2
画线啊,以渐变色一直画过去不就好了吗?Top
3 楼swqs(小虾米)回复于 2002-01-05 14:29:07 得分 0
渐变色是什么意思?Top
4 楼fz_zhou(vcfan)回复于 2002-01-05 14:37:18 得分 2
你可以改变调色板来做到Fade in and Fade out!Top
5 楼xming076(虚名)回复于 2002-01-05 19:16:41 得分 0
我需要简短的代码例子Top
6 楼idseaboy(seaboy)回复于 2002-01-05 20:01:28 得分 2
我做课设时用过,我是用了个位图(用photoshop作的),把它选进DC,再画上去的,你参考一下。代码就不写了,找本书就有的。呵呵。Top
7 楼idseaboy(seaboy)回复于 2002-01-05 20:02:54 得分 0
要不就画区域,渐变的画,我也用了,是不是很菜的做法?见笑见笑。Top
8 楼nj_zhulin(e路飞翔)回复于 2002-01-06 02:07:18 得分 2
随机取出刷子,在WM_TIME中在指定区域着色。不知道行不行?Top
9 楼dysxq()回复于 2002-01-06 04:02:49 得分 2
有个API, GradientFill,可以实现像标题栏一样的渐变效果,具体用法查MSDNTop
10 楼xming076(虚名)回复于 2002-01-06 09:29:30 得分 0
dysxq说的最接近我的要求,我试试。Top
11 楼xming076(虚名)回复于 2002-01-07 18:10:07 得分 0
好象参数比较多,能简单点就好了。Top
12 楼bladeboy(刀锋)回复于 2002-01-07 18:46:04 得分 0
不要画线,最好用画点,画线要不断改变画笔,容易有问题Top
13 楼DoItFreely(Freely)回复于 2002-01-07 19:27:12 得分 0
要是简单的水平或者竖直渐变,自己分割成n个小矩形,FillSolidRect()就搞掂了Top
14 楼dysxq()回复于 2002-01-08 01:01:09 得分 20
COLORREF crTop = ::GetSysColor(COLOR_ACTIVECAPTION);
COLORREF crBottom = ::GetSysColor(27); // COLOR_GRADIENTACTIVECAPTION
TRIVERTEX tv[2];
GRADIENT_RECT rectGrad;
tv[0].x = rect.left;
tv[0].y = rect.top;
tv[0].Red = (WORD)GetRValue(crTop) << 8;
tv[0].Green = (WORD)GetGValue(crTop) << 8;
tv[0].Blue = (WORD)GetBValue(crTop) << 8;
tv[0].Alpha = 0x0000;
tv[1].x = rect.Width();
tv[1].y = rect.Height();
tv[1].Red = (WORD)GetRValue(crBottom) << 8;
tv[1].Green = (WORD)GetGValue(crBottom) << 8;
tv[1].Blue = (WORD)GetBValue(crBottom) << 8;
tv[1].Alpha = 0x0000;
rectGrad.LowerRight = 1;
rectGrad.UpperLeft = 0;
::GradientFill(dc.m_hDC, tv, 2, &rectGrad, 1, GRADIENT_FILL_RECT_H);
Top
15 楼xming076(虚名)回复于 2002-01-08 12:24:20 得分 0
先谢dysxq了
小的门,上菜...Top




