更改PropertyGrid内的属性顺序

时间:2012-10-06 19:34:34

标签: c# propertygrid

我知道这是一个奇怪的问题,但我有这个“问题”。 我正在创建游戏中间件,用于创建具有全局照明等等的逼真照明。

我正处于创建世界观众的阶段,在那里你可以观看世界,对其进行一些修改,看看光照贴图的样子,你知道。

里面有一个属性网格。在网格类中,我有一个meshdata属性,在meshdata属性中我有材质属性,在该材质属性中我有COLOR PROPERTY。 YEAH。 它有R G B属性。 当我在属性网格中查看颜色属性时,这些值的顺序就像BGR,我可以将其更改为RGB吗?

大声笑我写的太多了..

2 个答案:

答案 0 :(得分:0)

您的Color属性是什么类型的? 如果可以,您应该使用System.Windows.Media.Color结构作为您的属性类型。

由于您需要浮点数据来表示每种颜色,请查看System.Windows.Media.Color的定义

    public float ScA { get; set; }        
    public float ScB { get; set; }       
    public float ScG { get; set; }
    public float ScR { get; set; }

    public static Color FromScRgb(float a, float r, float g, float b);
    public static Color FromAValues(float a, float[] values, Uri profileUri);
    public float[] GetNativeColorValues();
    public static Color FromValues(float[] values, Uri profileUri);

答案 1 :(得分:0)

您可以将 PropertyOrder 属性与 PropertySorter 一起使用。
创建继承自ExpandableObjectConverter的PropertySorter类,并重写GetPropertiesSupported和GetProperties方法以定义自己的排序顺序。

[TypeConverter(typeof(PropertySorter))]
public class ColorProperty
{
    [PropertyOrder(1)]
    public int R { get; set; }
    [PropertyOrder(2)]
    public int G { get; set; }
    [PropertyOrder(3)]
    public int B { get; set; }
}