之前做过一个项目,在VS用C#写一个软件平台,平台中调用NI公司的绘图控件cwgraph绘图(简称graph)。由于graph里面虽然可以更改绘制的线的颜色,但是不具有实时性,只能在运行平台中之间就设置好。为了实现在C#平台中可以实时的更改graph控件里面的绘制的线的颜色,我读取了graph里面的线条的linestyle属性。这是一个uint型的数字。
我们知道VS中对COLOR的定义是采用ARGB的方式,以int型数字来表示。 Alpha 是透明度,范围: 0——255,位于int的高8位; RED 是红,范围: 0——255,位于int的8-16位; Green 是绿,范围: 0——255,位于int的16-24位; Blue 是透明度,范围: 0——255,位于int的低8位。
graph中的颜色定义则不大一样,它采用COLORREF的定义,以uint型数字表示。它的顺序是BGR,是反过来的。就是说Blue 是红,范围: 0——255,位于int的8-16位; Green 是绿,范围: 0——255,位于int的16-24位; RED 是透明度,范围: 0——255,位于int的低8位。
知道这些之后,就可以方便的实现从graph中的linestyle读出颜色,然后找出VS中对应的颜色。为了实现用户可以实时的自定义颜色,我先将graphic供用户选择的颜色都读出来了转化为VS中的颜色,记住这些颜色供用户选择。然后用户选择之后就对linestyle进行更改就好了。
下面说说我处理COLOR跟COLOREF的方法: