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

Project1

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

[已经解决] 如何画两点间的连线

[复制链接]

Lv2.观梦者

梦石
0
星屑
919
在线时间
932 小时
注册时间
2011-5-11
帖子
440
跳转到指定楼层
1
发表于 2012-10-17 10:02:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
{:2_253:} 请问一下:如何在同一Windows中画两点间的连线?
需要参数有
  1. s_x#起点X坐标
  2. s_y#起点Y坐标
  3. o_x#终点X坐标
  4. o_y#终点Y坐标
  5. color#线条颜色
  6. Width#线条宽度有默认值
复制代码
求函数脚本
http://rpg.blue/static/image/smiley/yct/A059.gif中国字认识都不到一半,哪的心情学英语呀!

Lv2.观梦者

梦石
0
星屑
560
在线时间
1286 小时
注册时间
2011-6-14
帖子
4086
2
发表于 2012-10-17 19:17:29 | 只看该作者
主站上有教程的吧……
http://www.66rpg.com/articles/4652
* 但是没有width(我加上应该很容易的)

评分

参与人数 1星屑 +6 收起 理由
怪蜀黍 + 6 我很赞同

查看全部评分

回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
48
在线时间
841 小时
注册时间
2010-8-11
帖子
1135
3
发表于 2012-10-18 04:28:22 | 只看该作者
给你一个东西,很多年前自己写的:
(注意:里面的变量的名字可能和你说的有点不同,请注意看注释。)
  1. #==============================================================================
  2. # ** RCS(Rectangular Coordinate System)
  3. #------------------------------------------------------------------------------
  4. #    各种关于平面直角坐标系的方法集合。
  5. #==============================================================================
  6. module RCS
  7.   #----------------------------------------------------------------------------
  8.   # * 用两点求一次函数的k值
  9.   #----------------------------------------------------------------------------
  10.   def self.linear_function_k(x1, y1, x2, y2)
  11.     x = x1.to_f - x2.to_f
  12.     y = y1.to_f - y2.to_f
  13.     return y.abs / x.abs
  14.   end
  15.   #----------------------------------------------------------------------------
  16.   # * 用两点求一次函数的b值
  17.   #----------------------------------------------------------------------------
  18.   def self.linear_function_b(x1, y1, x2, y2)
  19.     k = RCS.linear_function_k(x1, y1, x2, y2)
  20.     return y1.to_f - x1.to_f * k.to_f
  21.   end
  22.   #----------------------------------------------------------------------------
  23.   # * 求出一个一次函数的y值
  24.   #----------------------------------------------------------------------------
  25.   def self.linear_function_y(x, k, b)
  26.     return k.to_f * x.to_f + b.to_f
  27.   end
  28. end
  29. class Bitmap
  30.   #----------------------------------------------------------------------------
  31.   # * 描绘直线 by 945127391
  32.   # begin_x : 直线开始的x坐标
  33.   # begin_y : 直线开始的y坐标
  34.   # end_x   : 直线结束的x坐标
  35.   # end_y   : 直线结束的y坐标
  36.   # color   : 直线的颜色
  37.   # line_width   : 直线的宽度(厚度)
  38.   #----------------------------------------------------------------------------
  39.   def draw_straight_line(begin_x, begin_y, end_x, end_y, line_width, color)
  40.     if begin_x == end_x
  41.       bitmap = Bitmap.new(line_width, (end_y-begin_y).abs)
  42.       bitmap.fill_rect(0, 0, bitmap.width, bitmap.height, color)
  43.       rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  44.       blt(begin_x, begin_y, bitmap, rect)
  45.       bitmap.dispose
  46.     elsif begin_y == end_y
  47.       bitmap = Bitmap.new((end_x-begin_x).abs, line_width)
  48.       bitmap.fill_rect(0, 0, bitmap.width, bitmap.height, color)
  49.       rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  50.       blt(begin_x, begin_y, bitmap, rect)
  51.       bitmap.dispose
  52.     else draw_linear_function(begin_x, begin_y, end_x, end_y, line_width, color)
  53.     end
  54.   end
  55.   #----------------------------------------------------------------------------
  56.   # * 描绘斜线  by 945127391
  57.   # begin_x : 斜线开始的x坐标
  58.   # begin_y : 斜开始的y坐标
  59.   # end_x   : 斜线结束的x坐标
  60.   # end_y   : 斜线结束的y坐标
  61.   # color   : 斜线的颜色
  62.   # line_width   : 斜线的宽度(厚度)
  63.   #----------------------------------------------------------------------------
  64.   def draw_linear_function(begin_x, begin_y, end_x, end_y, line_width, color)
  65.     k = RCS.linear_function_k(begin_x, begin_y, end_x, end_y)
  66.     b = RCS.linear_function_b(begin_x, begin_y, end_x, end_y)
  67.     bitmap = Bitmap.new((begin_x - end_x).abs, (begin_y - end_y).abs)
  68.     for x in 0...(begin_x - end_x).abs
  69.       y = RCS.linear_function_y(x, k, b)
  70.       rect = Rect.new(x, y, line_width, line_width)
  71.       bitmap.fill_rect(rect, color)
  72.     end
  73.     blt(begin_x, begin_y, bitmap, bitmap.rect)
  74.     bitmap.dispose
  75.   end
  76. end
复制代码
使用的时候直接对Bitmap用draw_straight_line就可以了
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-27 21:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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