Project1

标题: 如何绘制一条有一定宽度的渐变直线 [打印本页]

作者: Majirefy    时间: 2012-4-18 18:30
标题: 如何绘制一条有一定宽度的渐变直线
本帖最后由 Majirefy 于 2012-4-19 23:20 编辑

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


FONT_SIZE = 36
PADDING = 12
LINE_HEIGHT = 4
两个颜色都是白色:
RUBY 代码复制
  1. def back_color1
  2.     Color.new(255, 255, 255, 220)
  3. end


RUBY 代码复制
  1. def back_color2
  2.     Color.new(255, 255, 255, 0)
  3. end


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

当然背景是透明的,方便看而已
那个直线也是渐变的……(好吧,自己没有用画图软件做出来……)
作者: 吉井明久    时间: 2012-4-18 19:02
因为太笨了所以明久君无法理解这一段:
因为对contents进行渐变填充的话,其最低点的y坐标会和这个窗口的一样,而设想是和文字稍微隔开一点距离。


您的意思是空间不够么?可以调大窗口大小,或者增大行距嘛…
作者: feizhaodan    时间: 2012-4-18 20:11
本帖最后由 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)
复制代码





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1