高分求教,关于画刷的问题……
时间:2011-11-18
来源:互联网
Delphi(Pascal) code
var b:TLogBrush; Brush : HBRUSH; begin b.lbStyle:=0; b.lbColor:=clBlue; b.lbHatch:=1; Brush := CreateBrushIndirect(b); SelectObject(DC,Brush); Rectangle(DC, Space, Space, cWidth, CHeight ); end;
效果如下所示(左图):

效果地址,好像不能正常显示
http://hi.csdn.net/attachment/201111/17/300306_13215725335t9T.jpg
我需要实现右边的效果,我分析应该是通过加一个画刷蒙版的方式实现的
因为这个颜色是可以设置变化的
网上有一下加画刷蒙版的代码,不是太看的懂
求教有经验的高手了…………
谢谢
作者: bduren 发布时间: 2011-11-18
http://houke2004.blog.163.com/blog/static/20863165200952525747443/
作者: funxu 发布时间: 2011-11-18
线性画刷明显从一种颜色到另一种颜色的渐变
但我上面的图例应该是从一种颜色向透明的渐变
网上找很多,感觉用画刷蒙版实现比较好
当然了,只要实现效果就可以了
晚上回去试一下您给的参考,再次现感谢了
期待还有人能够指点一二了!
作者: bduren 发布时间: 2011-11-18
作者: funxu 发布时间: 2011-11-18
作者: Avan_Lau 发布时间: 2011-11-18
作者: Avan_Lau 发布时间: 2011-11-18
Delphi(Pascal) code
如果你的高度小于255 y1 := Space; y2 := Space; for i:=0 to CHeight do begin b.lbColor:=RGB(0, 255 - i, 0); ... y2 = Space + i; Rectangle(DC, Space, y1, cWidth, y2 + i); y1 = y2; end;
作者: AnSunny 发布时间: 2011-11-18
因为颜色是要让用户设置的
所以类似 b.lbColor:=RGB(0, 255 - i, 0); 这样的代码应该不太可能
还有,应该不会用 for 循环实现,因为效率较低,量大的时候(很多个这个控件) 程序的反应速度会很低
必须一次性绘制
继续坐等各位的指点
再次感谢了
作者: bduren 发布时间: 2011-11-18
作者: bduren 发布时间: 2011-11-18
作者: mdejtod 发布时间: 2011-11-18
gp : TGpGraphics;
r : TGpRect;
begin
gBrush := TGpLinearGradientBrush.Create(FRect,ARGBFromCOLORREF(FAlphas,color1), ARGBFromCOLORREF(FAlphaE,color2),lmHorizontal);
gp := TGpGraphics.Create(dc);
gp.FillEllipse(gBrush,r);
freeandnil(gBrush);
freeandnil(gp);
end;
作者: mdejtod 发布时间: 2011-11-18
为颜色透明度
作者: mdejtod 发布时间: 2011-11-18
作者: kaikai_kk 发布时间: 2011-11-18
再次期待更多的高手出现……
作者: bduren 发布时间: 2011-11-18
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28