.NET istifadə edərək onaltılı rəng kodundan rəng almaq üçün necə?

Hexadecimal rəng #FFDFD991 necə bir rəng ala bilərəm (məsələn, #FFDFD991 )?

Faylı oxudum və hex rəng kodunu aldım. Hexadecimal rəng kodu üçün müvafiq System.Windows.Media.Color nüsxəsini yaratmalıyam. Bu strukturda quraşdırılmış üsul varmı?

503
21 янв. viky Jan 21 tərəfindən təyin 2010-01-21 17:07 '10 at 17:07 2010-01-21 17:07
@ 14 cavab

Mən ARGB kodunu qəbul edirəm ... System.Drawing.Color və ya System.Windows.Media.Color deməkdir? Sonuncu, məsələn, WPF-də istifadə olunur. Mən hələ bu barədə heç kimə bəhs etməmişəm, buna görə də onu axtarırsınızsa:

 using System.Windows.Media; Color color = (Color)ColorConverter.ConvertFromString("#FFDFD991"); 
639
21 янв. Thorarin tərəfindən verilmiş cavab 21 yanvar 2010-01-21 17:32 '10 at 17:32 2010-01-21 17:32

HTML RGB kodlarını (# FFCC66 kimi hexadecimal kodlar deyilir) nəzərdə tutursanız , ColorTranslator sınıfını istifadə edin:

 System.Drawing.Color col = System.Drawing.ColorTranslator.FromHtml("#FFCC66"); 
border=0

Lakin, hexadecimal ARGB kodunu istifadə edirsinizsə, ColorConverter sınıfını System.Windows.Media ad boşluğundan istifadə edə bilərsiniz:

 Color col = ColorConverter.ConvertFromString("#FFDFD991") as Color; //or = (Color) ColorConverter.ConvertFromString("#FFCC66") ; 
474
21 янв. cavab Oded 21 yanvar verilir . 2010-01-21 17:10 '10 at 17:10 2010-01-21 17:10

ColorTranslator istifadə etmək istəmirsinizsə, bunu asanlıqla edə bilərsiniz:

 string colorcode = "#FFFFFF00"; int argb = Int32.Parse(colorcode.Replace("#", ""), NumberStyles.HexNumber); Color clr = Color.FromArgb(argb); 

Rəng kodu yalnız ARGB dəyərinin onaltılı təsviridir.

EDIT

Bir tam ədəd yerinə 4 dəyərdən istifadə etməlisinizsə, bu istifadə edə bilərsiniz (bir neçə şərh birləşdirir):

 string colorcode = "#FFFFFF00"; colorcode = colorcode.TrimStart('#'); Color col; // from System.Drawing or System.Windows.Media if (colorcode.Length == 6) col = Color.FromArgb(255, // hardcoded opaque int.Parse(colorcode.Substring(0,2), NumberStyles.HexNumber), int.Parse(colorcode.Substring(2,2), NumberStyles.HexNumber), int.Parse(colorcode.Substring(4,2), NumberStyles.HexNumber)); else // assuming length of 8 col = Color.FromArgb( int.Parse(colorcode.Substring(0, 2), NumberStyles.HexNumber), int.Parse(colorcode.Substring(2, 2), NumberStyles.HexNumber), int.Parse(colorcode.Substring(4, 2), NumberStyles.HexNumber), int.Parse(colorcode.Substring(6, 2), NumberStyles.HexNumber)); 

Qeyd 1 : NumberStyles System.Globalization'da.
Qeyd 2 : Öz səhvənizi yoxlayın (rəng kodu altı və ya 8 simvoldan on altılıq olmalıdır)

88
21 янв. Hans Ke st ing 21 yanvar 2010-01-21 17:28 '10 at 17:28 2010-01-21 17:28

Bu səliqəli uzatma üsulu da var:

 static class ExtensionMethods { public static Color ToColor(this uint argb) { return Color.FromArgb((byte)((argb  -16777216)>> 0x18), (byte)((argb  0xff0000)>> 0x10), (byte)((argb  0xff00) >> 8), (byte)(argb  0xff)); } } 

Istifadə edərkən:

 Color color = 0xFFDFD991.ToColor(); 
36
27 апр. Cavab 27 aprel tarixində Jink tərəfindən verilmişdir 2011-04-27 09:58 '11 at 9:58 2011-04-27 09:58

Aşağıdakı üç seçim tam eyni rəng verir. Sonuncu, Visual Studio 2010 IDE-də (bəlkə bu da bunu edən ReSharper) düzgün rəng ilə fərqlənir.

 var cc1 = System.Drawing.ColorTranslator.FromHtml("#479DEE"); var cc2 = System.Drawing.Color.FromArgb(0x479DEE); var cc3 = System.Drawing.Color.FromArgb(0x47, 0x9D, 0xEE); 
33
30 апр. Cavab 30-a qədər apreldir . 2013-04-30 13:13 '13 at 13:13 2013-04-30 13:13
  private Color FromHex(string hex) { if (hex.StartsWith("#")) hex = hex.Substring(1); if (hex.Length != 6) throw new Exception("Color not valid"); return Color.FromArgb( int.Parse(hex.Substring(0, 2), System.Globalization.NumberStyles.HexNumber), int.Parse(hex.Substring(2, 2), System.Globalization.NumberStyles.HexNumber), int.Parse(hex.Substring(4, 2), System.Globalization.NumberStyles.HexNumber)); } 
14
13 июня '14 в 23:32 2014-06-13 23:32 Cavab Baddack tərəfindən 13 İyun 2014 tarixində 23:32 2014-06-13 23:32 tarixində verilir

Aşağıdakı kodu istifadə edə bilərsiniz:

 Color color = System.Drawing.ColorTranslator.FromHtml("#FFDFD991"); 
11
09 нояб. Cavab Pengzhi 09 noyabrda verilir. 2010-11-09 11:15 '10 at 11:15 2010-11-09 11:15

Mən WPF fonunda Alice Blue kölgəsini tərcümə etməli və cavabın daha çox vaxt tələb etdiyini tapmalıyam:

 using System.Windows.Media; 

-

 System.Drawing.Color myColor = System.Drawing.ColorTranslator.FromHtml("#EFF3F7"); this.Background = new SolidColorBrush(System.Windows.Media.Color.FromArgb(myColor.A, myColor.R, myColor.G, myColor.B)); 
6
01 февр. Cavab verilir ConfusedDeer 01 Fevral. 2016-02-01 03:51 '16 at 3:51 2016-02-01 03:51

Bunu Windows Mağazası proqramı ilə etmək istəyirsinizsə, @Hans Kesting və @Jink'i izləyin:

  string colorcode = "#FFEEDDCC"; int argb = Int32.Parse(colorcode.Replace("#", ""), NumberStyles.HexNumber); tData.DefaultData = Color.FromArgb((byte)((argb  -16777216) >> 0x18), (byte)((argb  0xff0000) >> 0x10), (byte)((argb  0xff00) >> 8), (byte)(argb  0xff)); 
5
21 февр. Cavab Youngjae tərəfindən 21 fevralda verilir . 2014-02-21 16:18 '14 at 16:18 2014-02-21 16:18

Bu mesaj bir hexadecimal rəng kodundan bir sistem rənginə çevrilməyə çalışanlar üçün bir hekayə halına gəldi. Ona görə mən düşündüm ki, hexadecimal (RGB) və 8 rəqəmli (ARGB) hexadecimal dəyərləri ilə məşğul olan hərtərəfli bir həll əlavə edəcəyəm.

Default olaraq, Microsoft-a görə, RGB-dən ARGB-ə çevrildiyi zaman

Alfa dəyəri 255 (tamamilə qeyri-şəffaf) deməkdir.

Bu onaltılıq (RGB) hexadecimal rəng koduna FF əlavə edərək, səkkiz rəqəmli ARGB hex rəng kodu olacaq. Bu yolla, ARGB və RGB hex sistemlərini işləyən sadə bir üsul yaradılacaq və onları müvafiq rəng strukturuna çevirir.

  public static System.Drawing.Color GetColorFromHexValue(string hex) { string cleanHex = hex.Replace("0x", "").TrimStart('#'); if (cleanHex.Length == 6) { //Affix fully opaque alpha hex value of FF (225) cleanHex = "FF" + cleanHex; } int argb; if (Int32.TryParse(cleanHex, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out argb)) { return System.Drawing.Color.FromArgb(argb); } //If method hasn't returned a color yet, then there a problem throw new ArgumentException("Invalid Hex value. Hex must be either an ARGB (8 digits) or RGB (6 digits)"); } 

Hans Kestinqin cavabından ilhamlandı.

3
12 февр. Cavab 12 fevralda Justin tərəfindən verilir . 2014-02-12 21:32 '14 da 21:32 2014-02-12 21:32

istifadə

 System.Drawing.Color.FromArgb(myHashCode); 
1
21 янв. cavab verildi herzmeister 21 yanvar. 2010-01-21 17:12 '10 at 17:12 2010-01-21 17:12

Silverlight / WPF onaltılıq dəyərdən istifadə etmək üçün bir hexadecimal rəngli ellips quraşdırır :

 your_contorl.Color = DirectCast(ColorConverter.ConvertFromString("#D8E0A627"), Color) 
1
30 апр. Mwaffak Jamal Zakariya tərəfindən 30 apreldə cavab verildi 2012-04-30 06:49 '12 at 6:49 2012-04-30 06:49

HashCode deməkdirsə, .GetHashCode() olduğu kimi, geri dönə bilməyəcəyindən qorxuram. Hash funksiyaları ikitərəfli deyil, yalnız irəli getmək olar, geri deyil.

Ondokuzuncu rəng dəyərinə əsasən rəng almaq üçün Oded tərəfindən verilən təlimatları izləyin.

0
21 янв. Cavab Wim Hollebrandse Jan 21 tərəfindən verilir 2010-01-21 17:12 '10 at 17:12 2010-01-21 17:12

WPF:

 using System.Windows.Media; //hex to color Color color = (Color)ColorConverter.ConvertFromString("#7AFF7A7A"); //color to hex string hexcolor = color.ToString(); 
0
19 июля '13 в 15:22 2013-07-19 15:22 Cavab DevXP 19 iyul '13 saat 15:22 'də verilir 2013-07-19 15:22

bağlı digər suallar və ya sual