【问题标题】:Change the color for each line更改每行的颜色
【发布时间】:2012-11-30 23:33:08
【问题描述】:

我有一个在 3D CAD 程序中画线的控制台应用程序。现在为了更清楚地说明这一点,我想将这些线条更改为不同的颜色。

我的代码从文本文件中读取变量并从中计算数据,然后从该计算数据中生成一行。 文本文件中包含数据的每一行都会重复此过程。

现在我希望 Visual Basic 每次绘制新线时更改颜色,所以我得到不同颜色的线。

我尝试使用 For.. To.. Step 方法,但这不起作用。我也尝试使用我的文本文件中的变量(这些是不同的,所以当读取新行时,RGB 代码会改变)但这只会给我很多蓝色。

有什么建议吗?

编辑:

这是我用来绘制曲线的方法,每次生成新数据线时,RGB 代码都必须更改:

' Creating a Curve2d object by using the above defined points
                    objLineString = objLineStrings.AddByPoints(PointCount:=points, points:=dataArray)
                    objGeometricStyle = objLineString.Style
                    color = objGeometricStyle.LinearColor
                    objGeometricStyle.LinearColor = RGB(0,0,0)

【问题讨论】:

  • 你能展示画线的代码吗?
  • CAD 程序如何读取颜色?您是否必须指定 RGB 值,或者是否有某些预定义的颜色数字可以循环遍历?
  • 如果改变RGB(0, 0, 0) o RGB(255, 0, 0),会不会画红线?
  • CAD 程序称为 Solid Edge。我添加了一些代码,在其中绘制了一个线串,然后将该线的样式更改为使用 RGB 代码的颜色。
  • 是的,如果我将 RGB 代码设置为一种颜色,它确实会画一条红线。但我希望每一行都改变这个数字。我的程序已经有一个循环,它读取第一个文本行的所有数据,计算点然后画一条线。所以不知何故,RGB代码每次都必须改变。

标签: vb.net


【解决方案1】:

怎么样:

Dim rand As New Random() ' Used to generate random numbers
Dim colors(100) as Integer

' Create the colors
For i as Integer = 0 to 100 Step 1
    colors(i) = RGB(rand.Next(256), rand.Next(256), rand.Next(256))
Next

For i As Integer = 0 To 100 Step 1 ' Adjust to your needs
    ' Creating a Curve2d object by using the above defined points
    objLineString = objLineStrings.AddByPoints(PointCount:=points, points:=dataArray)
    objGeometricStyle = objLineString.Style
    color = objGeometricStyle.LinearColor
    objGeometricStyle.LinearColor = colors(i Mod 100) ' Mod returns the remainder of i / 100, so it's always less than 100.
Next

这不会总是给你“漂亮”的颜色,但它们会因每一行而不同。如果您想控制生成的颜色,可以设置一组预定义颜色并在迭代中使用这些颜色。

【讨论】:

  • 谢谢你的工作,但问题是(我的错)我有三种方法来制作一条线。这三个必须是相同的颜色,现在它们有不同的颜色。以及新读取数据的不同颜色。而且选择颜色也很慢。
  • 然后创建一组颜色,将它们存储在数组中,然后循环遍历数组。查看我的编辑。
猜你喜欢
  • 2021-11-16
  • 2020-10-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 2014-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多