AnyLogic 允许用户为他们的图形元素选择任何喜欢的颜色。这可以通过使用 颜色 对话框来完成。
颜色对话框
当用户想要为形状或模型元素指定一些自定义的 填充颜色 或 线条颜色 时,通常使用 颜色 对话框,而这些颜色不在最常用颜色的集合中。
使用颜色对话框选择自定义颜色的步骤:
- 点击 填充颜色 或 线条颜色 控件内的下拉列表,打开包含最常用颜色集合的列表。我们称此控件为颜色选择器。
- 点击 其他颜色... 部分。将打开 颜色 对话框。
- 使用提供的控件选择您喜欢的颜色(下面有描述)。
- 完成后,点击 确定 应用更改。
对话框包含两个页面(标准 和 光谱)以及对话框底部的公共区域。
标准页面
标准 页面允许用户从标准颜色集合中选择颜色。当鼠标悬停在调色板中的某种颜色上时,将显示显示此颜色象征名称的工具提示。
光谱页面
光谱 页面允许选择自定义颜色。您可以通过在 颜色 区域拖动手柄来选择光谱上的任何颜色。或者,您可以直接在下面的控件中指定 红色、绿色 和 蓝色 颜色组件。
对话框的公共区域包含以下控件:
- 预览窗格位于右下角,显示当前为编辑的模型元素设置的颜色(当前)和在颜色选择器的调色板中当前选择的颜色(新)。
- 选择的颜色 — 显示对应于当前选择颜色的代码字符串:颜色名称常量或颜色构造器。您可以使用此字段按在 "使用 Java 表达式定义颜色" 部分中描述的方式来定义自定义颜色。
- 复制 — 按钮将 选择的颜色 字段中的字符串复制到剪贴板。您可以稍后将其粘贴到您希望使用此颜色绘制的其他形状的相应 动态 属性中。
- 透明度 — 滑块设置颜色的透明度。透明度值显示在滑块右侧的控件中。255 对应完全不透明的颜色,0 对应完全透明。
使用 Java 表达式定义颜色
您可以通过在 选择的颜色 字段中指定有效的 Java 表达式来设置颜色。
允许几种替代语法。您可以指定:
-
AnyLogic 颜色常量:
- red,
- magenta,
- dodgerBlue,
- 等等,见 "颜色常量" 部分的完整列表。
-
Java 构造器:
- new Color(int r, int g, int b) — 创建具有指定红色、绿色和蓝色值的不透明 sRGB 颜色,范围在 (0 - 255)。
- new Color(int r, int g, int b, int a) — 创建具有指定红色、绿色、蓝色和 alpha 值的 sRGB 颜色,范围在 (0 - 255)。Alpha 值定义颜色透明度:0 定义完全透明的颜色,255 定义完全不透明的颜色。
-
颜色组件值以以下格式:
- 格式为 rrr ggg bbb 的一系列整数值,每个组件的值范围为 0 到 255。示例:120 37 0。
- 格式为 r g b 的一系列浮点值,每个组件的值范围为 0.0 到 1.0。示例:0.5 1 0.2。
- 十六进制值,格式为 #rrggbb 和 #aarrggbb,每个 xx 组件的值范围为 00 到 ff。示例:#00ff00 — 绿色。
颜色常量
最流行的颜色在 颜色 对话的 标准 页面上列出(见下图)。
如果您想使用其他颜色,可以通过在对话框的 光谱 页面上拖动手柄来选择它,或者明显地指定 红色、绿色 和 蓝色 颜色组件。
如图所示的颜色集合(显示在 颜色 对话框中)
如果您想动态切换到这些标准颜色之一,可以使用相应的常量名称来引用所需的颜色。下表列出了上面显示的所有标准颜色的颜色常量名称。使用索引 (A..J, 1..14) 来找到这些表单元格之间的对应关系。
F | G | H | I | J | ||||||
1 | black | darkGray | dimGray | gray | silver | lightGrey | gainsboro | whiteSmoke | white | red |
2 | darkRed | maroon | fireBrick | brown | indianRed | lightCoral | rosyBrown | snow | mistyRose | salmon |
3 | tomato | darkSalmon | coral | orangeRed | lightSalmon | feldspar | sienna | seaShell | saddleBrown | chocolate |
4 | sandyBrown | peachPuff | peru | linen | bisque | darkOrange | burlyWood | tan | antiqueWhite | navajoWhite |
5 | blanchedAlmond | papayaWhip | moccasin | orange | wheat | oldLace | floralWhite | darkGoldenRod | goldenRod | cornsilk |
6 | gold | khaki | lemonChiffon | paleGoldenRod | darkKhaki | yellow | olive | lightGoldenRodYellow | lightYellow | beige |
7 | ivory | oliveDrab | yellowGreen | darkOliveGreen | greenYellow | chartreuse | lawnGreen | lime | green | darkGreen |
8 | limeGreen | forestGreen | lightGreen | paleGreen | darkSeaGreen | honeyDew | seaGreen | mediumSeaGreen | springGreen | mintCream |
9 | mediumSpringGreen | mediumAquaMarine | aquamarine | turquoise | lightSeaGreen | mediumTurquoise | cyan | darkCyan | teal | darkSlateGray |
10 | paleTurquoise | lightCyan | azure | darkTurquoise | cadetBlue | powderBlue | lightBlue | deepSkyBlue | skyBlue | lightSkyBlue |
11 | steelBlue | dodgerBlue | lightSlateGray | slateGray | lightSteelBlue | cornflowerBlue | royalBlue | blue | mediumBlue | darkBlue |
12 | navy | midnightBlue | lavender | ghostWhite | slateBlue | lightSlateBlue | darkSlateBlue | mediumSlateBlue | mediumPurple | blueViolet |
13 | indigo | darkOrchid | darkViolet | mediumOrchid | magenta | darkMagenta | purple | violet | plum | thistle |
14 | orchid | violetRed | mediumVioletRed | deepPink | hotPink | paleVioletRed | lavenderBlush | crimson | pink | lightPink |
除了上述列出的“经典”颜色外,您还可以使用任何其他“自定义”颜色。您可以创建颜色作为标准 Java 类 Color 的实例。
动态定义自定义颜色
-
new Color(𝑟𝑒𝑑red, 𝑔𝑟𝑒𝑒𝑛green, 𝑏𝑙𝑢𝑒blue) — 根据给定的 RGB 值创建新颜色;每个值必须在范围 [0..255] 内。 示例: rectangle.setFillColor(new Color(0, 220, 100));
-
𝑐𝑜𝑙𝑜𝑟color.brighter() — 创建给定颜色的更亮版本。
示例: oval.setFillColor(red.brighter());
-
𝑐𝑜𝑙𝑜𝑟color.darker() — 创建给定颜色的更暗版本。
示例: oval.setFillColor(red.darker());
定义透明颜色
透明元素的绘制时间显著更长,因此可能会减慢模型执行速度。
-
new Color(𝑟𝑒𝑑red, 𝑔𝑟𝑒𝑒𝑛green, 𝑏𝑙𝑢𝑒blue, 𝑎𝑙𝑝ℎ𝑎alpha) — 创建具有给定 RGB 的透明颜色。𝑎𝑙𝑝ℎ𝑎alpha = 0 表示完全透明,𝑎𝑙𝑝ℎ𝑎alpha = 255 表示完全不透明。 示例: line.setColor(new Color(0, 0, 100, 30));
-
semiTransparent(Color color) — 创建给定颜色的半透明版本。颜色可以定义为颜色常量,或使用上述 new Color(𝑟𝑒𝑑red, 𝑔𝑟𝑒𝑒𝑛green, 𝑏𝑙𝑢𝑒blue) 构造器。
示例: line.setColor(semiTransparent(blue));
-
transparent(Color color, double fraction) — 创建给定颜色的透明版本。颜色可以定义为颜色常量,或使用上述 new Color(𝑟𝑒𝑑red, 𝑔𝑟𝑒𝑒𝑛green, 𝑏𝑙𝑢𝑒blue) 构造器。分数定义透明度比率。它的值范围在 [0..1],0 表示透明,1 — 不透明。
示例: line.setColor(transparent(blue, 0.7));
为多个形状获取漂亮的颜色
假设您的模型中有几种不同但相似的形状,您希望使用彼此协调的不同颜色来显示。函数 spectrumColor(int index, int period) 将返回一个具有给定索引的颜色,该颜色在 period 不同颜色中均匀分布在整个光谱上。
例子:
使用 spectrumColor() 函数获得的不同颜色为十个复制形状的个体项目(检查形状的属性:填充颜色,X,复制)。
在运行时使元素的组件不可见
-
将元素组件(填充或轮廓)的颜色设置为 null。
示例: oval.setLineColor(null);