以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 高级功能研发区 (http://www.weistock.com/bbs/list.asp?boardid=5) ---- 画线问题请教 (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=2178) |
-- 作者:xyhsoft -- 发布时间:2010/7/19 23:08:26 -- 画线问题请教
如图,上面一根线是用程序的画线工具画的,下面的一根是自己用VBS代码画的,但在窗格的右边,上面的一根过Y轴右边的部分不可见,而下面的一根过Y轴右边是看得见的。不知有什么方法,使下面的自己画的线在Y轴右边也不可见?
VBS代码如下:
Sub Technic_Paint() end_x = Grid.PelsByPos(3660,false) End Sub
|
-- 作者:admin -- 发布时间:2010/7/20 17:55:10 -- TopHeight 当前窗格上边距高度,以象素表示,该边距通常用来显示公式数据,可读写。 LeftWidth 当前窗格左边距宽度,以象素表示,该边距通常用来显示左Y坐标,可读写。 RightWidth 当前窗格右边距宽度,以象素表示,该边距通常用来显示右Y坐标,可读写。 BottomHeight 当前窗格下边距高度,以象素表示,该边距通常用来显示X坐标,可读写。
将上述属性考虑进去即可。
Sub Technic_Paint() end_x = Grid.PelsByPos(3660,false)
if end_x > Grid.Width - Grid.RightWidth then end_x = Grid.Width - Grid.RightWidth end if \'其他限制代码,自己加上去即可 End Sub |
-- 作者:明心 -- 发布时间:2010/7/21 8:58:48 -- 顶一下,学习了。 |
-- 作者:xyhsoft -- 发布时间:2010/7/21 10:33:51 -- 以下是引用admin在2010-7-20 17:55:10的发言:
TopHeight 当前窗格上边距高度,以象素表示,该边距通常用来显示公式数据,可读写。 LeftWidth 当前窗格左边距宽度,以象素表示,该边距通常用来显示左Y坐标,可读写。 RightWidth 当前窗格右边距宽度,以象素表示,该边距通常用来显示右Y坐标,可读写。 BottomHeight 当前窗格下边距高度,以象素表示,该边距通常用来显示X坐标,可读写。
将上述属性考虑进去即可。
Sub Technic_Paint() end_x = Grid.PelsByPos(3660,false)
if end_x > Grid.Width - Grid.RightWidth then end_x = Grid.Width - Grid.RightWidth end if \'其他限制代码,自己加上去即可 End Sub 版主,这种方式不行哦,X轴坐标变化了,其相对应的Y轴坐标没有变,当将整幅K线图形向右移动过程中,那画出的线的位置是不断变化的。即:整幅K线图形向右水平移动到右边界,继续右移时,所画线的初位置(start_x, start_y)变化,而末位置( end_x, end_y)不变。
![]() [此贴子已经被作者于2010-7-21 10:44:22编辑过]
|
-- 作者:admin -- 发布时间:2010/7/21 10:38:26 -- 道理是一样的,你可以先把代码写上去,测试一下,如果还是不对,再来说明原因和问题 |
-- 作者:xyhsoft -- 发布时间:2010/7/21 10:46:56 -- 测试一下,原因和问题如4楼说明。要保持原图不变,对应的end_y也要重新计算了。要是复杂图形,那就太复杂了。还有没有别的方法呢? [此贴子已经被作者于2010-7-21 10:54:28编辑过]
|
-- 作者:admin -- 发布时间: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 -- 发布时间:2010/7/21 11:03:38 -- 请版主再看看,原因和问题如4楼说明。画面移动时,要保持原图不变,对应的end_y也要重新计算了。要是复杂图形,那就太复杂了。还有没有别的方法呢? |
-- 作者:admin -- 发布时间:2010/7/21 13:54:27 -- 没有什么办法,我们编程序都需要自己处理边界问题的 |
-- 作者:xyhsoft -- 发布时间:2010/7/22 0:04:42 --
显示问题已解决,谢谢版主解答。
但还需两个转换函数,用于获取数据,但编译器通不过: FrameToGrid(x1, y1, x2, y2) 上面两个都通不过。 [此贴子已经被作者于2010-7-22 0:07:32编辑过]
|