查看: 67|回复: 0

[转载发布] 简单的HSL渐变

[复制链接]
  • TA的每日心情
    开心
    前天 09:55
  • 签到天数: 37 天

    连续签到: 3 天

    [LV.5]常住居民I

    2028

    主题

    32

    回帖

    7260

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    0
    卡币
    5184
    OK点
    16
    积分
    7260
    发表于 同元一千年八月九日(秋) | 显示全部楼层 |阅读模式
    边学边练

    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在线咨询功能删除,谢谢。

    本帖子中包含更多资源

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

    x
    天天去同能,天天有童年!
    回复 论坛版权

    使用道具 举报

    ahome_bigavatar:guest
    ahome_bigavatar:welcomelogin
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2024-5-12 15:38 , Processed in 0.047606 second(s), 44 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表