Project1
标题:
如何画两点间的连线
[打印本页]
作者:
345912390
时间:
2012-10-17 10:02
标题:
如何画两点间的连线
{:2_253:} 请问一下:如何在同一Windows中画两点间的连线?
需要参数有
s_x#起点X坐标
s_y#起点Y坐标
o_x#终点X坐标
o_y#终点Y坐标
color#线条颜色
Width#线条宽度有默认值
复制代码
求函数脚本 dsu_plus_rewardpost_czw
作者:
satgo1546
时间:
2012-10-17 19:17
主站上有教程的吧……
http://www.66rpg.com/articles/4652
* 但是没有width(我
猜
加上应该很容易的)
作者:
945127391
时间:
2012-10-18 04:28
给你一个东西,很多年前自己写的:
(注意:里面的变量的名字可能和你说的有点不同,请注意看注释。)
#==============================================================================
# ** RCS(Rectangular Coordinate System)
#------------------------------------------------------------------------------
# 各种关于平面直角坐标系的方法集合。
#==============================================================================
module RCS
#----------------------------------------------------------------------------
# * 用两点求一次函数的k值
#----------------------------------------------------------------------------
def self.linear_function_k(x1, y1, x2, y2)
x = x1.to_f - x2.to_f
y = y1.to_f - y2.to_f
return y.abs / x.abs
end
#----------------------------------------------------------------------------
# * 用两点求一次函数的b值
#----------------------------------------------------------------------------
def self.linear_function_b(x1, y1, x2, y2)
k = RCS.linear_function_k(x1, y1, x2, y2)
return y1.to_f - x1.to_f * k.to_f
end
#----------------------------------------------------------------------------
# * 求出一个一次函数的y值
#----------------------------------------------------------------------------
def self.linear_function_y(x, k, b)
return k.to_f * x.to_f + b.to_f
end
end
class Bitmap
#----------------------------------------------------------------------------
# * 描绘直线 by 945127391
# begin_x : 直线开始的x坐标
# begin_y : 直线开始的y坐标
# end_x : 直线结束的x坐标
# end_y : 直线结束的y坐标
# color : 直线的颜色
# line_width : 直线的宽度(厚度)
#----------------------------------------------------------------------------
def draw_straight_line(begin_x, begin_y, end_x, end_y, line_width, color)
if begin_x == end_x
bitmap = Bitmap.new(line_width, (end_y-begin_y).abs)
bitmap.fill_rect(0, 0, bitmap.width, bitmap.height, color)
rect = Rect.new(0, 0, bitmap.width, bitmap.height)
blt(begin_x, begin_y, bitmap, rect)
bitmap.dispose
elsif begin_y == end_y
bitmap = Bitmap.new((end_x-begin_x).abs, line_width)
bitmap.fill_rect(0, 0, bitmap.width, bitmap.height, color)
rect = Rect.new(0, 0, bitmap.width, bitmap.height)
blt(begin_x, begin_y, bitmap, rect)
bitmap.dispose
else draw_linear_function(begin_x, begin_y, end_x, end_y, line_width, color)
end
end
#----------------------------------------------------------------------------
# * 描绘斜线 by 945127391
# begin_x : 斜线开始的x坐标
# begin_y : 斜开始的y坐标
# end_x : 斜线结束的x坐标
# end_y : 斜线结束的y坐标
# color : 斜线的颜色
# line_width : 斜线的宽度(厚度)
#----------------------------------------------------------------------------
def draw_linear_function(begin_x, begin_y, end_x, end_y, line_width, color)
k = RCS.linear_function_k(begin_x, begin_y, end_x, end_y)
b = RCS.linear_function_b(begin_x, begin_y, end_x, end_y)
bitmap = Bitmap.new((begin_x - end_x).abs, (begin_y - end_y).abs)
for x in 0...(begin_x - end_x).abs
y = RCS.linear_function_y(x, k, b)
rect = Rect.new(x, y, line_width, line_width)
bitmap.fill_rect(rect, color)
end
blt(begin_x, begin_y, bitmap, bitmap.rect)
bitmap.dispose
end
end
复制代码
使用的时候直接对Bitmap用draw_straight_line就可以了
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1