搜索附件  

简单的HSL渐变: color.zip

 

简单的HSL渐变:
边学边练

RUBY 代码
  1. 下)   无符号整型
  2.   # color 椭圆边框颜色          RMXP的Color实例对象
  3.   # fillB 椭圆填充的起始颜色    RMXP的Color实例对象
  4.   # fillE 椭圆填充的终止颜色    RMXP的Color实例对象 或 nil(单色填充)
  5.   #--------------------------------------------------------------------
  6.   def fill_ellipse3(cx, cy, ax, by, mode, color, fillB, fillE=nil)
  7.     if fillE
  8.       if mode == 0
  9.         step = ax + ax + 1
  10.         src_rect = Rect.new(0, 0, 0, 0)
  11.       else
  12.         step = by + by + 1
  13.       end
  14.       src = Bitmap.new(step, 1)
  15.       DrawScanH.call(src.object_id, fillB.object_id, fillE.object_id)
  16.     else
  17.       mode = 1if mode = 0
  18.     end
  19.     ratio, w2 = ax.to_f / by,  0
  20.     (by).downto(1)do |y|
  21.       w = (Math.sqrt((by + y) * (by - y)) * ratio).round
  22.       if fillE
  23.         if mode == 1
  24.           self.fill_rect(cx - w, cy - y, w + w, 1, src.get_pixel(by - y, 0))
  25.           self.fill_rect(cx - w, cy + y, w + w, 1, src.get_pixel(by + y, 0))
  26.         else
  27.           src_rect.set(ax - w, 0, w + w, 1)
  28.           self.blt(cx - w, cy - y, src, src_rect)
  29.           self.blt(cx - w, cy + y, src, src_rect)
  30.         end
  31.       else
  32.         self.fill_rect(cx - w, cy - y, w + w, 1, fillB)
  33.         self.fill_rect(cx - w, cy + y, w + w, 1, fillB)
  34.       end
  35.       self.set_pixel(cx - w, cy - y, color)
  36.       self.set_pixel(cx + w, cy - y, color)
  37.       self.set_pixel(cx - w, cy + y, color)
  38.       self.set_pixel(cx + w, cy + y, color)
  39.       while w2 < w
  40.         self.set_pixel(cx - w2, cy - y - 1, color)
  41.         self.set_pixel(cx + w2, cy - y - 1, color)
  42.         self.set_pixel(cx - w2, cy + y + 1, color)
  43.         self.set_pixel(cx + w2, cy + y + 1, color)
  44.         w2 += 1
  45.       end
  46.     end
  47.     if fillE
  48.       if mode == 1
  49.         self.fill_rect(cx - ax, cy, ax + ax + 1, 1, src.get_pixel(by, 0))
  50.       else
  51.         self.blt(cx - ax, cy, src, src.rect)
  52.       end
  53.     else
  54.       self.fill_rect(cx - ax, cy, ax + ax + 1, 1, fillB)
  55.     end
  56.     self.set_pixel(cx - ax, cy, color)
  57.     self.set_pixel(cx + ax, cy, color)
  58.     src.disposeif src
  59.   end
  60.   def draw_text_ex(x, y, text, color0, color1)
  61.     rect = self.text_size(text)
  62.     temp = Bitmap.new(rect.width, rect.height)
  63.     temp.draw_text(rect, text)
  64.     FillTextH.call(temp.object_id, color0.object_id, color1.object_id)
  65.     self.blt(x, y, temp, rect)
  66.     temp.dispose
  67.   end
  68. end
复制代码




             本帖来自P1论坛作者RPGzh500223,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=488994  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
         同一主题附件:
    d1.gif
    d2.png
    color.zip (7.43 KB)
关闭

幸运抽奖

社区每日抽奖来袭,快来试试你是欧皇还是非酋~

立即查看

Loading...

QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

GMT+8, 2025-4-4 20:09 , Processed in 0.077912 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部