请问有什么办法通过真彩色(RGB)来获取对应的索引颜色呢?
我在用C#程序将图形导出为dxf文件的时候,由于要导出颜色,原来的颜色采用的是真彩色,但dxf里面只支持索引颜色,我在网上只是查到可以通过索引号查到对应的RGB,但是有没有相反的操作呢?在AutoCad2004中如果选择了真彩色做图层颜色,保存为DXF文件的时候它如转为索引颜色,看来autocad内部是集成了转换的,但我在导出的时候用什么函数,或者什么算法呢?<img title="dvubb" alt="图片点击可在新窗口打开查看" src="http://www.mjtd.com/BBS/Skins/Default/emot/em11.gif" align="middle" border="0"/>请高手帮忙!! <p>若已知道RGB,可以使用Autodesk.AutoCAD.Colors.Color 的构造函数<br/>public static Autodesk.AutoCAD.Colors.Color FromRgb(byte red, byte green, byte blue) 生成一个Color,<br/>然后通过Color的ColorIndex属性应该就可以得到索引颜色值<br/>当然也可以通过计算的方法获得<br/>ColorIndex = R + G * 256 + B * 256 * 256</p><p>需要说明这里所说的索引与DXF颜色的索引是不等同的,<br/>因为DXF颜色的取值范围只是0~256,而上面的索引范围是0~256^3<br/>而你提到的真彩色取值应该比RGB颜色范围更大</p><p>具体的DXF颜色索引与RGB是有个表的对应关系的,不好意思我现在找不到那个表,<br/>那个表里RGB的取值不是连续的 大概是0 10 20 40 70 255 这样子。</p> <p><font face="宋体" size="2">你好,我是在网上查到了这个doslib,可以实现来回的转换:</font></p><p><font face="宋体" size="2">DOSLib 7.3<br/>dos_</font><a name="baidusnap0"></a><font size="2"><font face="宋体"><b style="COLOR: black; BACKGROUND-COLOR: #ffff66;">rgbtoaci</b></font></font></p><p><font size="2"><font face="宋体"><strong><font style="BACKGROUND-COLOR: #ffff66;">dos_acitorgb</font></strong><br/>函数需要三个参数值而非一个表</font></font></p><p><font face="宋体" size="2">但是不知道doslib可否集成到vs2005中?最好还是有像网上提供出来的aci转rgb的算法更好,如果要引用其它类库的话,可能会比较麻烦。</font></p>
页:
[1]