红色的这一句是用了“配色系统”中的颜色,应该是黄色的,那么第三个图层"ColorBookYellow"应该是黄色,为什么程序运行之后是白色的呢?
代码来自“AutoCAD .NET 开发人员手册”的“指定图层颜色”
- [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(); }}
|