简体   繁体   中英

What value does System.Drawing.Color -state have?

System.Drawing.Color has a private field int state which makes equality a bit more tricky than one would expect from a struct.

Anyone know what on earth it's for? Who, what and why sets and reads it?

As far as i understand, it is compared to theese values:

    private static short StateKnownColorValid   = 0x0001;
    private static short StateARGBValueValid    = 0x0002;
    private static short StateValueMask         = (short)(StateARGBValueValid);
    private static short StateNameValid         = 0x0008;
    private static long NotDefinedValue = 0;

http://reflector.webtropy.com/default.aspx/Net/Net/3@5@50727@3053/DEVDIV/depot/DevDiv/releases/whidbey/netfxsp/ndp/fx/src/CommonUI/System/Drawing/Color@cs/1/Color@cs

So my shot is that its used to dertermine if its a "System Color" or a user defined from eg ARGB values.

public bool IsKnownColor 
{
    get { return((state & StateKnownColorValid) != 0);}
}

The Color struct overrides the Equals method and does therefore automatically do the right thing when colors are tested for equality.

The Equals method compares the value , state , knownColor and name fields.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM