- 积分
- 3064
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-6-20
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
概述: IDLgrPolyline的用途很广泛(废话),但它的线型只有7种:Solid line (the default) ,Dotted, Dashed, Dash dot, Dash dot dot dot, Long dash, No line drawn. 实际应用种或许不够用.需要自定义线型. 如何自定义线型: IDLgrPolyline的LineStyle使用一个两个元素的数组自定义: LineStyle = [repeat, bitmask].比如,你可以定义LINESTYLE = [2, 'F0F0'X], 这是一个虚线线型. 如何理解Repeat和Bitmask这俩参数的含义?.当然,帮助文档中有大概的介绍.但不完全. 定制线型时,我们将IDL绘制的Polyline看作时一条由0和1组成的数据链.这里边,0代表空白,1代表绘制.比如,一条虚线"- - - -",我们可以看作0,1数据链: 1100110011001100,含义是绘制两个点,空两个点,再绘制两个点....以此类推.形象的说就是一个Bit形式(0/1)的掩膜 ---Bitmask. 先说Bitmask参数,这个参数时决定线型的关键点.具体确定步骤为: 1: 根据你对线型的设计,写出二进制形式的数据链.比如我们设计一个线型为画一个点,空一个点,再画一个点,再空一个点......那么换成0/1掩膜的形式就是:1010101010101010,注意这个设计用的是16个Bit.因为我们在测试过程种,发现一个完整的线型单元是由16个Bit掩膜构成的. 只用8个Bit,或多于16个Bit.都无法完成.或者说,最好严格按照16个Bit来设计你的线型. 2: 然后把这16个Bit组成的二进制数据,换算成10进制,或者16进制.比如 1010101010101010的十进制形式为43690,十六进制形式为aaaa,在Repeat参数为1的情况下,线型LineStyle= [1,43690]或者LineStyle=[1,'aaaa'X] 再看Repeat参数,这个参数直观来讲,其实就是对每个Bit位的重复次数.简单来讲,就是对整个线型单元进行一定倍数的放大.这个参数值域为[1,255]. 比如上面的1010101010101010,Repeat为1的情况下,是画一个点,空一个点,再画一个点,再空一个点......如果Repeat为2,就变成了画两个点,空两个点,再画两个点,再空两个点...... 以此类推,便不难理解Repeat的含义了. 总结: 自定义线型,首先要设计出线型的16位二进制掩膜,然后再将这个二进制数换算成10进制或者16进制,作为Bitmask参数的值.然后根据需要,设定Repeat对线型进行缩放即可. 至于在直接图形法里边如何自定义线型,暂时没有研究...
Pro TestPolylineStyle
winsize = [400, 400]
oWin = Obj_New('IDLgrWindow', dim=winsize)
oView = Obj_New('IDLgrView', viewplane_rect=[0, 0, winsize], dim=winsize)
oModel = Obj_New('IDLgrModel')
oView->Add, oModel
oPolyline = Obj_New('IDLgrPolyline', [[0, 200], [400, 200]], $ linestyle=[1, 'aaaa'X])
oModel->Add, oPolyline
oPolyline = Obj_New('IDLgrPolyline', [[0, 100], [400, 100]], $ linestyle=[2, 'd6b5'X])
oModel->Add, oPolyline
oWin->Draw, oView
End
原网址:http://hi.baidu.com/idl%B3%F5%D1%A7%D5%DF/blog/item/ace6bca9766e8ab9ca130c25.html
|
|