明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1691|回复: 2

[求助]指定图层颜色的问题

[复制链接]
发表于 2010-8-8 21:48:00 | 显示全部楼层 |阅读模式

红色的这一句是用了“配色系统”中的颜色,应该是黄色的,那么第三个图层"ColorBookYellow"应该是黄色,为什么程序运行之后是白色的呢?

代码来自“AutoCAD .NET 开发人员手册”的“指定图层颜色
  1. [CommandMethod("SetLayerColor")]public static void SetLayerColor(){  // Get the current document and database  Document acDoc = Application.DocumentManager.MdiActiveDocument;  Database acCurDb = acDoc.Database;   // Start a transaction  using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())  {      // Open the Layer table for read      LayerTable acLyrTbl;      acLyrTbl = acTrans.GetObject(acCurDb.LayerTableId,                                   OpenMode.ForRead) as LayerTable;       // Define an array of layer names      string[] sLayerNames = new string[3];      sLayerNames[0] = "ACIRed";      sLayerNames[1] = "TrueBlue";      sLayerNames[2] = "ColorBookYellow";       // Define an array of colors for the layers      Color[] acColors = new Color[3];      acColors[0] = Color.FromColorIndex(ColorMethod.ByAci, 1);      acColors[1] = Color.FromRgb(23, 54, 232);      acColors[2] = Color.FromNames("PANTONE Yellow 0131 C",                                    "PANTONE(R) pastel coated");       int nCnt = 0;       // Add or change each layer in the drawing      foreach (string sLayerName in sLayerNames)      {          LayerTableRecord acLyrTblRec;           if (acLyrTbl.Has(sLayerName) == false)          {              acLyrTblRec = new LayerTableRecord();               // Assign the layer a name              acLyrTblRec.Name = sLayerName;               // Upgrade the Layer table for write              if (acLyrTbl.IsWriteEnabled == false) acLyrTbl.UpgradeOpen();               // Append the new layer to the Layer table and the transaction              acLyrTbl.Add(acLyrTblRec);              acTrans.AddNewlyCreatedDBObject(acLyrTblRec, true);          }          else          {              // Open the layer if it already exists for write              acLyrTblRec = acTrans.GetObject(acLyrTbl[sLayerName],                                              OpenMode.ForWrite) as LayerTableRecord;          }           // Set the color of the layer          acLyrTblRec.Color = acColors[nCnt];           nCnt = nCnt + 1;      }       // Save the changes and dispose of the transaction      acTrans.Commit();  }}
发表于 2010-8-8 22:31:00 | 显示全部楼层

代码在Cad2010正常,2008失败

应该是2008的类库的问题吧

 楼主| 发表于 2010-8-8 23:02:00 | 显示全部楼层

回复:(lzh741206)代码在Cad2010正常,2008失败应...

老大,我的CAD2007也不行,算了,跳过这地方了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-29 16:48 , Processed in 0.186422 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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