0%

NCL Color Bar 轉換

 

    

工作上常常會遇到一些圖表呈現或是數值呈現 , 這時候就需要好看的 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
//讀取color文字檔
//name , r , g , b
//轉換 rgb 為 hex
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;
}

//skipColorCount++;
//if (skipColorCount % 16 != 0)
//{
// continue;
//}

var lineResult = line.Split(' ');
//string name = lineResult[0];
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);

//writer.WriteLine("#{0}", hex);

//writer.WriteLine(string.Format("<option value='{0}' style='background: #{1};'>{0}</option>", name, 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

關閉