爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 2900|回复: 4

[源程序] 调用surfer绘图时难过的问题

[复制链接]

新浪微博达人勋

发表于 2015-10-22 15:43:12 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 地瓜侠 于 2015-10-22 15:43 编辑

编程语言调用surfer绘制的等值线图,要显示色标时,一般使用如下语句:
//(忽略编程语言的差异)
contourMap.ShowColorScale = true;
contourMap.ColorScale.Top = 0;
contourMap.ColorScale.Left = 3;
contourMap.ColorScale.Height = 60;
contourMap.ColorScale.Width = 15;  

要使图标的位置、大小表现恰当,需要调整它的top,left,height,width属性,
请问这些属性的数值具体是怎么计算出来的呢?
研究了很久也找不到这些属性和grd文件间的比例关系,希望哪位朋友帮忙看一下
感激不尽!

色标就发育不良

色标发育不良

色标发育不良


密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-10-23 08:24:13 | 显示全部楼层
请求帮助!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2015-10-23 15:30:43 | 显示全部楼层
假设 contouMap 的上级是容器 MapFrame。
  1. contourMap.ColorScale.Top = MapFrame.Top-0.5*(MapFrame.Height-contourMap.ColorScale.Height)
  2. contourMap.ColorScale.Left = MapFrame.Left+MapFrame.Width+3;
复制代码
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-10-23 15:36:20 | 显示全部楼层
上面代码的意思是,
在垂直方向上,MapFrame 与 ColorScale 居中对齐;
在水平方向上,MapFrame 往右 3 个单位就是 ColorScale。
要把 ColorScale 摆其他方向应该很容易知道计算公式了吧?

要注意的是,因为在垂直方向的定位使用了 ColorScale 本身的高度参数,所以应该先设置好自己 Height 值。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-10-26 09:50:37 | 显示全部楼层
holz 发表于 2015-10-23 15:36
上面代码的意思是,
在垂直方向上,MapFrame 与 ColorScale 居中对齐;
在水平方向上,MapFrame 往右 3  ...

非常感谢你的回复!
Height值打算根据lvl文件的色标数量来定

用了你的方法,色标位置还是不对呢,
比如,left数值在60左右是正确,但是MapFram.Left+MapFrame.width的值一般都在10以下
导致色标又压在图上了

密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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