欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 画线问题请教

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有9814人关注过本帖树形打印复制链接

主题:画线问题请教

帅哥哟,离线,有人找我吗?
xyhsoft
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:24 积分:237 威望:0 精华:0 注册:2010/5/18 22:48:21
画线问题请教  发帖心情 Post By:2010/7/19 23:08:26 [只看该作者]

 

如图,上面一根线是用程序的画线工具画的,下面的一根是自己用VBS代码画的,但在窗格的右边,上面的一根过Y轴右边的部分不可见,而下面的一根过Y轴右边是看得见的。不知有什么方法,使下面的自己画的线在Y轴右边也不可见?

 

VBS代码如下:

 

Sub Technic_Paint()
     set Grid = technic.ActiveGrid
     start_x = Grid.PelsByPos(3600,false)
     start_y = Grid.PriceToPels(5.20)

     end_x = Grid.PelsByPos(3660,false)
     end_y = Grid.PriceToPels(4.20)
 
     call Grid.DrawLine (start_x, start_y, end_x, end_y)  

End Sub

 

 



 回到顶部
帅哥哟,离线,有人找我吗?
admin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2010/7/20 17:55:10 [只看该作者]

TopHeight         当前窗格上边距高度,以象素表示,该边距通常用来显示公式数据,可读写。

LeftWidth         当前窗格左边距宽度,以象素表示,该边距通常用来显示左Y坐标,可读写。

RightWidth        当前窗格右边距宽度,以象素表示,该边距通常用来显示右Y坐标,可读写。

BottomHeight      当前窗格下边距高度,以象素表示,该边距通常用来显示X坐标,可读写。

 

将上述属性考虑进去即可。

 

Sub Technic_Paint()
     set Grid = technic.ActiveGrid
     start_x = Grid.PelsByPos(3600,false)
     start_y = Grid.PriceToPels(5.20)

     end_x = Grid.PelsByPos(3660,false)
     end_y = Grid.PriceToPels(4.20)

 

     if end_x > Grid.Width - Grid.RightWidth then

        end_x = Grid.Width - Grid.RightWidth

     end if

    '其他限制代码,自己加上去即可
 
     call Grid.DrawLine (start_x, start_y, end_x, end_y)  

End Sub


 回到顶部
帅哥哟,离线,有人找我吗?
明心
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:274 积分:841 威望:0 精华:10 注册:2010/7/12 15:25:05
  发帖心情 Post By:2010/7/21 8:58:48 [只看该作者]

顶一下,学习了。

 回到顶部
帅哥哟,离线,有人找我吗?
xyhsoft
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:24 积分:237 威望:0 精华:0 注册:2010/5/18 22:48:21
  发帖心情 Post By:2010/7/21 10:33:51 [只看该作者]

以下是引用admin在2010-7-20 17:55:10的发言:

TopHeight         当前窗格上边距高度,以象素表示,该边距通常用来显示公式数据,可读写。

LeftWidth         当前窗格左边距宽度,以象素表示,该边距通常用来显示左Y坐标,可读写。

RightWidth        当前窗格右边距宽度,以象素表示,该边距通常用来显示右Y坐标,可读写。

BottomHeight      当前窗格下边距高度,以象素表示,该边距通常用来显示X坐标,可读写。

 

将上述属性考虑进去即可。

 

Sub Technic_Paint()
     set Grid = technic.ActiveGrid
     start_x = Grid.PelsByPos(3600,false)
     start_y = Grid.PriceToPels(5.20)

     end_x = Grid.PelsByPos(3660,false)
     end_y = Grid.PriceToPels(4.20)

 

     if end_x > Grid.Width - Grid.RightWidth then

        end_x = Grid.Width - Grid.RightWidth

     end if

    '其他限制代码,自己加上去即可
 
     call Grid.DrawLine (start_x, start_y, end_x, end_y)  

End Sub

版主,这种方式不行哦,X轴坐标变化了,其相对应的Y轴坐标没有变,当将整幅K线图形向右移动过程中,那画出的线的位置是不断变化的。即:整幅K线图形向右水平移动到右边界,继续右移时,所画线的初位置(start_x, start_y)变化,而末位置( end_x, end_y)不变。
 
[此贴子已经被作者于2010-7-21 10:44:22编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
admin
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2010/7/21 10:38:26 [只看该作者]

道理是一样的,你可以先把代码写上去,测试一下,如果还是不对,再来说明原因和问题

 回到顶部
帅哥哟,离线,有人找我吗?
xyhsoft
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:24 积分:237 威望:0 精华:0 注册:2010/5/18 22:48:21
  发帖心情 Post By:2010/7/21 10:46:56 [只看该作者]

测试一下,原因和问题如4楼说明。要保持原图不变,对应的end_y也要重新计算了。要是复杂图形,那就太复杂了。还有没有别的方法呢?
[此贴子已经被作者于2010-7-21 10:54:28编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
admin
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2010/7/21 10:55:21 [只看该作者]

将4个坐标数字都进行坐标范围的规范

if start_x < 0 then

   start_x = 0

end if

 

if start_x > Grid.Height - Grid.BottomHeight

   start_x = Grid.Height - Grid.BottomHeight

end if

 

if start_x > Grid.Width - Grid.RightWidth then

   start_x = Grid.Width - Grid.RightWidth

end if

 

start_y 其余参数依次类推


 回到顶部
帅哥哟,离线,有人找我吗?
xyhsoft
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:24 积分:237 威望:0 精华:0 注册:2010/5/18 22:48:21
  发帖心情 Post By:2010/7/21 11:03:38 [只看该作者]

请版主再看看,原因和问题如4楼说明。画面移动时,要保持原图不变,对应的end_y也要重新计算了。要是复杂图形,那就太复杂了。还有没有别的方法呢?

 回到顶部
帅哥哟,离线,有人找我吗?
admin
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2010/7/21 13:54:27 [只看该作者]

没有什么办法,我们编程序都需要自己处理边界问题的


 回到顶部
帅哥哟,离线,有人找我吗?
xyhsoft
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:24 积分:237 威望:0 精华:0 注册:2010/5/18 22:48:21
  发帖心情 Post By:2010/7/22 0:04:42 [只看该作者]

(链接的图形质量好差啊)

 

显示问题已解决,谢谢版主解答。

 

但还需两个转换函数,用于获取数据,但编译器通不过:

 FrameToGrid(x1, y1, x2, y2)
 ValueByPoint(x, y, Date, ydata, false)

上面两个都通不过。

[此贴子已经被作者于2010-7-22 0:07:32编辑过]

 回到顶部
总数 12 1 2 下一页