zgyxn 发表于 2003-5-13 08:17:00

关于颜色的问题

在VBA中,我只会用那几种常见的8种颜色,请问有什么方法表示其它的颜色

china-hz 发表于 2003-5-13 08:28:00

RGB

leeyeafu 发表于 2003-5-13 08:53:00

Object.Color属性的使用

在ACAD 2000/2002 VBA中,Color值可以指定0到256之间的任何整数,每个数字代表的颜色你可以启动ACAD,并使用更改颜色看到。常见的8种颜色用acRed等常数定义了,其它颜色没有这样的预定义,所以你只能使用0-255的颜色索引号(INDEX)。
在ACAD 2004 VBA中,颜色管理通过AcCmColor对象实现,设置该对象,可以使用16bit真彩。

zgyxn 发表于 2003-5-13 09:32:00

给一个例子吧

给一个例子吧

leeyeafu 发表于 2003-5-14 08:41:00

例子:

本帖最后由 leeyeafu 于 2003-5-14 8:41:38 编辑

以下代码请注意适用的ACAD版本。
Sub Samp_color_2004()
Dim objLine As AcadLine
Dim Stpt(0 To 2) As Double
Dim Edpt(0 To 2) As Double
Dim str As String
Stpt(0) = 100: Stpt(1) = 10: Stpt(2) = 0
Edpt(0) = 150: Edpt(1) = 100: Edpt(2) = 0
Set objLine = ThisDrawing.ModelSpace.AddLine(Stpt, Edpt)
ZoomAll
Dim color As AcadAcCmColor
Set color = AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor.16")
For i = 0 To 10
Call color.SetRGB(i * 100 Mod 255, ((i + 20) * 100) Mod 255, 255 - i * 20)
objLine.TrueColor = color
objLine.Update
str = ThisDrawing.Utility.GetString(False, "按任意键继续...")
Next i
End Sub

Sub Samp_color_2002()
Dim objLine As AcadLine
Dim Stpt(0 To 2) As Double
Dim Edpt(0 To 2) As Double
Dim str As String
Stpt(0) = 100: Stpt(1) = 10: Stpt(2) = 0
Edpt(0) = 150: Edpt(1) = 100: Edpt(2) = 0
Set objLine = ThisDrawing.ModelSpace.AddLine(Stpt, Edpt)
ZoomAll
For i = 1 To 25
objLine.color = i * 10 - 9
objLine.Update
str = ThisDrawing.Utility.GetString(False, "按任意键继续...")
Next i
End Sub
页: [1]
查看完整版本: 关于颜色的问题