设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2755|回复: 6
打印 上一主题 下一主题

[已经解决] 水平线描画

[复制链接]

Lv4.逐梦者

梦石
0
星屑
8629
在线时间
1465 小时
注册时间
2012-6-6
帖子
349
跳转到指定楼层
1
发表于 2019-4-12 21:57:59 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 流浪杰哥 于 2019-4-12 21:59 编辑

先上图,这个里面的是横向水平线的描画,请问纵向水平线该如何描画呢?还请大佬们解惑

Lv5.捕梦者

梦石
10
星屑
39587
在线时间
1920 小时
注册时间
2010-11-14
帖子
3320

R考场第七期纪念奖

2
发表于 2019-4-12 22:23:42 | 只看该作者
依样画葫芦就好
  1. def draw_verc_line(x)
  2.   line_x = x + line_height / 2 - 1
  3.   contents.fill_rect(line_x, 0, 2, contents_height, line_color)
  4. end
复制代码

点评

这不对啊  发表于 2019-4-13 00:50

评分

参与人数 1星屑 +30 收起 理由
VIPArcher + 30 认可答案

查看全部评分

用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

Lv2.观梦者

永无止境的旅程

梦石
0
星屑
503
在线时间
1552 小时
注册时间
2012-6-19
帖子
1226

开拓者贵宾

3
发表于 2019-4-13 00:53:11 | 只看该作者
  1. class Bitmap
  2.   #--------------------------------------------------------------------------
  3.   # ● 描绘直线   
  4.   #     x1,y1,x2,y2:  直线两端的坐标
  5.   #     width:    宽度  
  6.   #     color:    颜色
  7.   #--------------------------------------------------------------------------
  8.   def drawline(x1, y1, x2, y2, width, color)
  9.     x1 = x1.to_f
  10.     y1 = y1.to_f
  11.     x2 = x2.to_f
  12.     y2 = y2.to_f
  13.     width = width.to_f
  14.     k = (y2 - y1) / (x2 - x1)
  15.     if k.abs > 1
  16.       drawline_x(x1, y1, x2, y2, width, color)
  17.     else
  18.       drawline_y(x1, y1, x2, y2, width, color)
  19.     end
  20.   end
  21.   def drawline_x(x1, y1, x2, y2, width, color)
  22.     l = ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5 * width / (y1 - y2)
  23.     length = l.abs * 2
  24.     k = (x2 - x1) / (y2 - y1) #x=ky+b
  25.     b = x1 - k * y1
  26.     if l > 0
  27.       for ty in y2.to_i..y1.to_i
  28.         tx = ty * k + b
  29.         fill_rect(tx - l, ty, length, 1, color)
  30.       end
  31.     else
  32.       for ty in y1.to_i..y2.to_i
  33.         tx = ty * k + b
  34.         fill_rect(tx + l, ty, length, 1, color)
  35.       end
  36.     end
  37.   end
  38.   def drawline_y(x1, y1, x2, y2, width, color)
  39.     l = ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5 * width / (x1 - x2)
  40.     height = l.abs * 2
  41.     k = (y2 - y1) / (x2 - x1) #y=kx+b
  42.     b = y1 - k * x1
  43.     if l > 0
  44.       for tx in x2.to_i..x1.to_i
  45.         ty = tx * k + b
  46.         fill_rect(tx, ty - l, 1, height, color)
  47.       end
  48.     else
  49.       for tx in x1.to_i..x2.to_i
  50.         ty = tx * k + b
  51.         fill_rect(tx, ty + l, 1, height, color)
  52.       end
  53.     end
  54.   end
  55. end
复制代码

  1. 使用方式
  2. @sprite = Sprite.new
  3. @sprite.bitmap = Bitmap.new(100,100)
  4. @sprite.bitmap.drawline(0,0,100,100,Color.new(255,255,255))
复制代码

评分

参与人数 1星屑 +30 收起 理由
VIPArcher + 30 认可答案

查看全部评分

[url=https://rpg.blue/thread-389697-1-1.html]https://rpg.blue/https://rpg.blue/data/attachment/forum/201602/26/220128cfbxxs47xth4xkz4.jpg[/url]
<font size="5">[color=Green][url=https://rpg.blue/forum.php?mod=viewthread&tid=396208&extra=page%3D1][color=DeepSkyBlue]全新配套ACT系统,每周末一大更新,尽请期待。[/color][/url][/color]
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8629
在线时间
1465 小时
注册时间
2012-6-6
帖子
349
4
 楼主| 发表于 2019-4-13 09:44:30 | 只看该作者

我试了试,感觉这样似乎没毛病。。。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8629
在线时间
1465 小时
注册时间
2012-6-6
帖子
349
5
 楼主| 发表于 2019-4-13 10:18:39 | 只看该作者

老哥这个似乎更高端,非常感谢!
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8629
在线时间
1465 小时
注册时间
2012-6-6
帖子
349
6
 楼主| 发表于 2019-4-13 10:19:18 | 只看该作者

这个没有问题,可行,非常感谢!
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-17 00:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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