明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4120|回复: 2

请问有什么办法通过真彩色(RGB)来获取对应的索引颜色呢?

[复制链接]
发表于 2008-6-10 17:44 | 显示全部楼层 |阅读模式
我在用C#程序将图形导出为dxf文件的时候,由于要导出颜色,原来的颜色采用的是真彩色,但dxf里面只支持索引颜色,我在网上只是查到可以通过索引号查到对应的RGB,但是有没有相反的操作呢?在AutoCAD2004中如果选择了真彩色做图层颜色,保存为DXF文件的时候它如转为索引颜色,看来autocad内部是集成了转换的,但我在导出的时候用什么函数,或者什么算法呢?图片点击可在新窗口打开查看请高手帮忙!!
发表于 2008-6-11 08:34 | 显示全部楼层

若已知道RGB,可以使用Autodesk.AutoCAD.Colors.Color 的构造函数
public static Autodesk.AutoCAD.Colors.Color FromRgb(byte red, byte green, byte blue) 生成一个Color,
然后通过Color的ColorIndex属性应该就可以得到索引颜色值
当然也可以通过计算的方法获得
ColorIndex = R + G * 256 + B * 256 * 256

需要说明这里所说的索引与DXF颜色的索引是不等同的,
因为DXF颜色的取值范围只是0~256,而上面的索引范围是0~256^3
而你提到的真彩色取值应该比RGB颜色范围更大

具体的DXF颜色索引与RGB是有个表的对应关系的,不好意思我现在找不到那个表,
那个表里RGB的取值不是连续的 大概是0 10 20 40 70 255 这样子。

 楼主| 发表于 2008-6-11 10:07 | 显示全部楼层

你好,我是在网上查到了这个doslib,可以实现来回的转换:

DOSLib 7.3
dos_
rgbtoaci

dos_acitorgb
函数需要三个参数值而非一个表

但是不知道doslib可否集成到vs2005中?最好还是有像网上提供出来的aci转rgb的算法更好,如果要引用其它类库的话,可能会比较麻烦。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-28 22:26 , Processed in 0.595272 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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