.版本 2
.程序集 程序集1
.程序集变量 背景, 多维矩阵类
.程序集变量 坐标, 二维整数坐标结构类, , "3", 存放3个点,分别是线外的点,线的起点,线的终点
.子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行
.局部变量 颜色, 标量结构类
颜色.通道1 = 255
颜色.通道2 = 255
颜色.通道3 = 255
窗口_创建 (“小白鼠”, #窗口创建_自动适应)
背景.构造 (600, 400, #CV_8UC3, 颜色) ' // 白色图片
背景.显示图像 (“小白鼠”)
窗口_添加鼠标事件 (“小白鼠”, &鼠标事件)
窗口_等待按键 ()
返回 (0)
.子程序 鼠标事件
.参数 事件, 整数型, , #鼠标事件_鼠标指针在窗口上移动
.参数 横坐标, 整数型
.参数 纵坐标, 整数型
.参数 标志, 整数型, , #鼠标标志_按住左键拖拽
.参数 回调参数, 整数型
.局部变量 步骤, 整数型, 静态, , 控制鼠标操作步骤
.局部变量 空白图片, 多维矩阵类
.局部变量 颜色, 标量结构类
.局部变量 距离, 整数型
.局部变量 局坐标, 二维整数坐标结构类
.判断开始 (事件 = #鼠标事件_按下鼠标左键)
.判断开始 (步骤 = 0)
坐标 [1].横坐标 = 横坐标
坐标 [1].纵坐标 = 纵坐标
步骤 = 1
.默认
.如果真 (步骤 = 1)
坐标 [2].横坐标 = 横坐标
坐标 [2].纵坐标 = 纵坐标
坐标 [3].横坐标 = 横坐标
坐标 [3].纵坐标 = 纵坐标
步骤 = 2
.如果真结束
.判断结束
.判断 (事件 = #鼠标事件_鼠标指针在窗口上移动)
.如果真 (步骤 = 2)
坐标 [3].横坐标 = 横坐标
坐标 [3].纵坐标 = 纵坐标
.如果真结束
.判断 (事件 = #鼠标事件_释放鼠标左键)
.如果真 (步骤 = 2)
步骤 = 3
.如果真结束
.默认
.如果真 (事件 = #鼠标事件_按下鼠标右键)
步骤 = 0
连续赋值 (0, 坐标 [1].横坐标, 坐标 [1].纵坐标, 坐标 [2].横坐标, 坐标 [2].纵坐标, 坐标 [3].横坐标, 坐标 [3].纵坐标)
.如果真结束
.判断结束
' ------------------------------------画图---------------------------------
背景.复制 (空白图片) ' 拷贝空白图片,方便重复画图
.如果真 (坐标 [1].横坐标 ≠ 0 且 坐标 [1].纵坐标 ≠ 0)
颜色.通道1 = 255
颜色.通道2 = 0
颜色.通道3 = 0
图像绘制_圆形 (空白图片, 坐标 [1], 2, 颜色, -1, 8) ' 画线外的蓝点
颜色.通道1 = 0
颜色.通道2 = 255
颜色.通道3 = 0
图像绘制_直线 (空白图片, 坐标 [2], 坐标 [3], 颜色, 2, 8) ' 画绿线
距离 = 拟合运算_点到点的距离 (坐标 [2], 坐标 [3])
.如果真结束
.如果真 (步骤 = 3)
局坐标.横坐标 = 20
局坐标.纵坐标 = 40
颜色.通道1 = 0
颜色.通道2 = 0
颜色.通道3 = 255
.如果真 (坐标 [2].横坐标 ≠ 0 且 坐标 [2].纵坐标 ≠ 0)
.如果真 (距离 < 50)
图像绘制_文字 (空白图片, “line too short!”, 局坐标, #字体_衬线字体, 1, 颜色, 1, 8)
.如果真结束
.如果真结束
' -----------------------------计算垂足坐标-----------------------------
拟合运算_点到线的距离 (坐标 [1], 坐标 [2], 坐标 [3], 局坐标)
' -----------------------------画红色的垂线-----------------------------
图像绘制_直线 (空白图片, 坐标 [1], 局坐标, 颜色, 2, 8)
.如果真结束
空白图片.显示图像 (“小白鼠”)