工作上常常會遇到一些圖表呈現或是數值呈現 , 這時候就需要好看的 Color Bar! 還好以前搞過 NCL 上面有不少漂亮的 Color Bar 可以下載 比較好看的大概就是 MPL 開頭的 , 下載下來的檔案會像是以下這種格式
1 2 3 4 5 6 ncolors= 128 # r g b 0.572226 0.834894 0.777009 0.610796 0.849781 0.770242 0.649366 0.864667 0.763476 0.687935 0.879554 0.756709
但是一般常用的多半是 HEX 很多年前寫個 c# 小程式轉換 , 不過印象中 NCL 好像自己就有類似的函數
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 var files = Directory.EnumerateFiles(@"D:\rgb\" , "*.rgb" );foreach (var file in files){ var fileName = Path.GetFileNameWithoutExtension(file); var lines = File.ReadAllLines(@"D:\rgb\" + fileName + ".rgb" ); List<string > colorList = new List<string >(); var flag = false ; var skipColorCount = 0 ; List<string > hexs = new List<string >(); int skip = 2 ; int counter = 1 ; foreach (var line in lines) { if (counter <= skip) { counter++; continue ; } flag = !flag; if (flag == false ) { continue ; } var lineResult = line.Split(' ' ); int r = Convert.ToInt32(Convert.ToDouble(lineResult[0 ]) * 255.0 ); int g = Convert.ToInt32(Convert.ToDouble(lineResult[1 ]) * 255.0 ); int b = Convert.ToInt32(Convert.ToDouble(lineResult[2 ]) * 255.0 ); Color color = Color.FromArgb(r, g, b); string hex = color.R.ToString("X2" ) + color.G.ToString("X2" ) + color.B.ToString("X2" ); hexs.Add(hex); } using (StreamWriter writer = new StreamWriter(@"D:\rgb\" + fileName + ".txt" )) { foreach (var hex in hexs) { writer.WriteLine("#{0}" , hex); } } hexs.Reverse(); using (StreamWriter writer = new StreamWriter(@"D:\rgb\" + fileName + "-inv.txt" )) { foreach (var hex in hexs) { writer.WriteLine("#{0}" , hex); } } }
如果不夠用的話也可以試試 ncwms 設計的 Color Bar