查看: 3523|回复: 2

[已经解决] 如何绘制一条有一定宽度的渐变直线

[复制链接]
梦石
0
星屑
60
在线时间
317 小时
注册时间
2009-1-18
回帖
154
发表于 2012-4-18 18:30:06 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 Majirefy 于 2012-4-19 23:20 编辑

在Ace中,Window_MapName中定义了一个方法:draw_update(rect)。
想将这个稍微改造一下,实现成一种效果,在地图的名字下面画一条长长的两边都渐变的直线,当然有一定的宽度。
不知道有什么好办法。
自己改造了一下这个方法:
[pre lang="ruby" line="1"]  def draw_background(rect)
    temp_rect = rect.clone
    temp_rect.width /= 2
    temp_rect.y = FONT_SIZE - PADDING
    temp_rect.height = LINE_HEIGHT
    contents.gradient_fill_rect(temp_rect, back_color2, back_color1)
    temp_rect.x = temp_rect.width
    contents.gradient_fill_rect(temp_rect, back_color1, back_color2)
end[/pre]

FONT_SIZE = 36
PADDING = 12
LINE_HEIGHT = 4
两个颜色都是白色:
[pre lang="ruby" line="1"]  def back_color1
    Color.new(255, 255, 255, 220)
end[/pre]

[pre lang="ruby" line="1"]  def back_color2
    Color.new(255, 255, 255, 0)
end[/pre]

不知道有什么更好的方法,因为对contents进行渐变填充的话,其最低点的y坐标会和这个窗口的一样,而设想是和文字稍微隔开一点距离。
具体想要的效果如下:

效果

效果

当然背景是透明的,方便看而已
那个直线也是渐变的……(好吧,自己没有用画图软件做出来……)
梦石
0
星屑
50
在线时间
112 小时
注册时间
2011-10-6
回帖
177
发表于 2012-4-18 19:02:14 | 显示全部楼层
因为太笨了所以明久君无法理解这一段:
因为对contents进行渐变填充的话,其最低点的y坐标会和这个窗口的一样,而设想是和文字稍微隔开一点距离。


您的意思是空间不够么?可以调大窗口大小,或者增大行距嘛…

点评

嗯,理解正确…… 嘛,表述不明,抱歉~~(鞠躬)  发表于 2012-4-19 00:04
回复

使用道具 举报

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
回帖
2982

贵宾

发表于 2012-4-18 20:11:49 | 显示全部楼层
本帖最后由 feizhaodan 于 2012-4-18 20:12 编辑

可以试着用@show_count来控制线条宽度。之后一点一点描绘线条的方法也要放在update中。
大致思路:
  1. w = self.width * @show_count / 150 # show_count最大值为150
  2. rect = Rect.new(self.x+self.width/2,self.y+32,w,4)
  3. self.content.gradient_fill_rect(rect,backc1,backc2)
复制代码

点评

嗯,我先试试~~(写入党材料到这么晚T_T)  发表于 2012-4-19 00:09
还有挺多错的,自己改改吧。  发表于 2012-4-18 20:15
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部