C#如何动态更改对象属性

时间:2017-06-04 11:01:56

标签: c# enums msagl

我正在阅读本教程  http://chalaki.com/how-to-program-msagl-glee-to-create-hierarchical-graph-layouts/519/

使用代码示例。

enter image description here

我正在尝试使属性动态化(我希望以后能够从数据库加载属性)

我试过了

set.seed(24)
DT <- data.table(V1 = LETTERS[1:6], V2 = sample(1:4, 6, replace = TRUE), 
   V3 = sample(2:4, 6, replace = TRUE), V4 = sample(3:4, 6, replace= TRUE))

但它不起作用,我该怎么做,甚至读到动态这样做?

[ANSWER] 我不确定这是否是最佳方式,但它确实有效。

- 对于我做的颜色

string dColor = "Red"; 
string dShape = "Diamond";

Microsoft.Glee.Drawing.Node n2 = graph.FindNode(strNode2);
n2.Attr.Fillcolor = Microsoft.Glee.Drawing.Color.dColor;
n2.Attr.Shape = Microsoft.Glee.Drawing.Shape.dShape;

- 对于我做过的形状

using mColor = Microsoft.Msagl.Drawing.Color;
using sColor = System.Drawing.Color;

sColor c = sColor.FromName("Red");
graph.FindNode("test1").Attr.FillColor = new mColor(c.A,c.R,c.G,c.B);

其中“test1”,“diamond”和“Red”值来自数据库。

1 个答案:

答案 0 :(得分:1)

Color不是string

Microsoft.Glee.Drawing.Node n2 = graph.FindNode(strNode2);
var someColor = System.Drawing.Color.Red;
n2.Attr.Fillcolor = someColor;

如果要将颜色存储在数据库中,可以使用Color上的一种静态方法:

string dColor = "Red"; 
n2.Attr.Fillcolor = Color.FromName(dColor);

如果您不遵守指定的颜色,还有Color.FromArgb(int);

修改

看起来他们使用的是与System.Drawing中不同的Color类。我在MSDN论坛上找到了an example

string color = "Red";
var cvtColor = new ColorConverter();
var sysColor = cvtColor.ConvertFromString(color);
n2.Attr.Fillcolor = new Microsoft.Msagl.Drawing.Color(sysColor.R, sysColor.B, sysColor.G);

有一些example code on GitHub

n2.Attr.Fillcolor = Microsoft.Msagl.Drawing.Color.Magenta;