对canvas.Polygon()这个闭合多变型的颜色填充 ( 积分: 40 )

  • 主题发起人 主题发起人 seekmzy
  • 开始时间 开始时间
S

seekmzy

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾
我要实现在一个polygon中的填充渐变的颜色,画布的polygon使用离散的点数组形成的凸多边形,请问如何实现阿,大伙能帮我想想办法吗,给点启示也好
我想了一种方法就是 先做一个 颜色渐变的BMP图片,然后利用Canvas.Brush.Bitmap:=XBmp;
这样可以出来效果,但是很不理想,而且我还准备利用滑块来调节颜色渐变的效果,这样的方法明显不行。
我还想把 canvas的polygon()方法重写或者把brush相关的方法重写来实现这种效果,可是不知如何下手来重写(我市菜鸟)
所以请大虾们帮帮忙,提提意见和想法
 
各位大虾
我要实现在一个polygon中的填充渐变的颜色,画布的polygon使用离散的点数组形成的凸多边形,请问如何实现阿,大伙能帮我想想办法吗,给点启示也好
我想了一种方法就是 先做一个 颜色渐变的BMP图片,然后利用Canvas.Brush.Bitmap:=XBmp;
这样可以出来效果,但是很不理想,而且我还准备利用滑块来调节颜色渐变的效果,这样的方法明显不行。
我还想把 canvas的polygon()方法重写或者把brush相关的方法重写来实现这种效果,可是不知如何下手来重写(我市菜鸟)
所以请大虾们帮帮忙,提提意见和想法
 
[:(][:(]难道没有人理??
 
[:(!]大富翁们都哪里去了啊
 
[:D][:D][:D]
三个小时过去了
我终于想出来了
哈哈哈哈哈哈哈![^][^][^][^]我的分数浪费了啊,唉,又不能加给自己!

[V][V][V][V][V][V][V]送分了,快来抢啊

如果谁想知道怎么及决这个问题的,留言我会给你解答的,唉,为什么我的问题老是没有人回答呢
 
顶一下,楼主公布答案吧[:D]
 
我来等分

另外希望能给出解决方法
 
[^]你们两不厚道!强烈建议chenybin留下QQ或者MSN,大虾,我想和你多多咨询。哈我先给啊啊啊啊啊 加上10分,等chenybin说出QQ号之后,我再给他30分
[:(]这年头高手的QQ可真不容易搞到阿!
 
解决方法:
这个解决方法还是有一些瑕疵,
主要原理----浑水摸鱼!哈,在内存中动态画出若干个bitmap对象,利用画笔实现这几个bitmap对象的渐变填充,其中设置一个调节系数L, L决定这个bitmap对象颜色渐变时颜色跳变值 255/L ,还有一个最重要的参数 这个凸多边形横向最大宽度 MaxWidth 当L小于MaxWidth时部分填充这个bitmap对象,然后剩下的部分填充为渐变的最浅色。当L大于等于Maxwidth时,直接全部填充bitmap对象,这样当L太大时 由于跳跃值很小 bitmap几乎被填充为纯色。这里要注意宗左向右渐变和从右向左渐变填充方式是不一样的。另外从相填充可以采用相同的办法。L的取值范围 1-254,我们设置一个 滑动条 调节 L的值,这样就可以实现不同的渐变效果,每次调节L重画一次多边形,设置它的canvas.brush.bitmap:=前面的bitmap对象,这样就实现了这个多边形的渐变填充调节。当然这属于最笨也最简单的方法了。还有对于bitmap对象的宽度阿要保持和凸多边形一至,高度呢随便设置就可以了!

希望高手不要笑话阿!我是菜鸟所以只能用本方法,不过我会很努力的向各位高手学习。
问一下我想重写某个控件的某个方法如何重写呢??请高手给个具体的格式
分我会随后加上的[8D]
 
渐变本身是好处理的,关键在于你说的多边形,GDI里面有个函数,我记不得了,类似油漆桶的功能,就是碰到边界就不画了,这样你可以省力不少

兄体抬举我了,我混分为主,多多益善
 
[:(!]QQ留下 chenybin
 

Similar threads

I
回复
0
查看
772
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部