बिल्डिंग हाल ही में मैं अपने रंग और चमक मूल्य के आधार पर एक .NET रंग चार्ट में आया था। मुझे क्या स्ट्रोक पागल ग्रेस्केल चार्ट है। उदाहरण के लिए, डार्कग्रे वास्तव में ग्रे के बाद हल्का है? इसके अलावा, मैं आरजीबी मूल्यों के क्रम में कोई तर्क नहीं देख सकता, यह 0 से 105 से 128 तक जाता है?ग्रेस्केले ब्रश क्लास
GrayScaleBrushes.Pct05
GrayScaleBrushes.Pct10
GrayScaleBrushes.Pct15
..all the way to.Pct95
...
ie: e.FillRectangle(GrayScaleBrushes.Pct05, exampleRect);
कैसे करना है:
0 : Black
105 : DimGray
128 : Gray
169 : DarkGray!
192 : Silver
211 : LightGray
220 : Gainsboro
245 : Ghostwhite
255 : White
http://sites.google.com/site/cdeveloperresources/
क्या मैं चाहता हूँ एक GrayScaleBrushes वर्ग जो वास्तव में ब्रश वर्ग की तरह बर्ताव करता है, लेकिन अपने कस्टम योजना के साथ, की तरह है कि, यह सुनिश्चित कर लें कि ब्रश सही ढंग से निपटान करेंगे?
संपादित करें: .NET ब्रश क्लास निम्न जैसा दिखता है (परावर्तक का उपयोग करके अलग किया गया)।
public sealed class Brushes
{
// Fields
private static readonly object AliceBlueKey = new object();
// Methods
private Brushes()
{
}
// Properties
public static Brush AliceBlue
{
get
{
Brush brush = (Brush) SafeNativeMethods.Gdip.ThreadData[AliceBlueKey];
if (brush == null)
{
brush = new SolidBrush(Color.AliceBlue);
SafeNativeMethods.Gdip.ThreadData[AliceBlueKey] = brush;
}
return brush;
}
}
}
सुरक्षितनेट मोड मेरे लिए पहुंच योग्य नहीं लगता है। मान लीजिए कि मैंने एक स्थिर विधि में एक सॉलिड ब्रश वापस कर दिया है, क्या इससे सबकुछ ठीक से निपट सकता है? (और है कि परीक्षण करने के लिए कैसे?)
public sealed class GrayScaleBrushes
{
private static SolidBrush pct05 = null;
public static SolidBrush Pct05
{
get
{
if (pct05 == null)
{
int rgbVal = GetRgbValFromPct(5);
pct05 = new SolidBrush(Color.FromArgb(rgbVal, rgbVal, rgbVal));
}
return pct05;
}
}
private static int GetRgbValFromPct(int pct)
{
return 255 - (int)(((float)pct/100f) * 255f);
}
}
कारण 'डार्कग्रे> ग्रे' के कारण, विकिपीडिया देखें: http://en.wikipedia.org/wiki/X11_color_names#Color_names_that_clash_between_X11_and_HTML.2FCSS –