using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace vcsWEBcolor140
{
public partial class Form1 : Form
{
string dir = "c:\\vcs2010pro\\vcs7WEBcolor140\\data-file";
public Form1()
{
InitializeComponent();
}
//------------------------------------------------------------------
private void toolStripButton1_Click(object sender, EventArgs e)
{
System.IO.StreamReader sr;
System.IO.StreamWriter sw;
string dat;
string[] sbuf;
char delim = ',';
string fnameR = "";
string fnameW1 = ""; ;
string fnameW2 = ""; ;
int i, j, k;
string[] colname = new string[140];
byte rr, gg, bb;
string colrgb = "";
string col_16 = "";
string strcol = "";
int num, ic;
string scase = "_16";
//string scase = "rgb";
fnameW1 = dir + "\\subwebcolor140"+scase+".html";
fnameW2 = dir + "\\cswebcolor140"+scase+".css";
toolStripLabel1.Text = fnameW1;
//htmlファイル出力
sw = new System.IO.StreamWriter(fnameW1, false, System.Text.Encoding.GetEncoding("shift-jis"));
sw.WriteLine("");
sw.WriteLine("
");
sw.WriteLine("");
sw.WriteLine("");
sw.WriteLine("");
//*******************************************************************
fnameR = dir + "\\inpvbcolorname.txt";
//ColorプロパティのTransparentはrgb値が(255,255,255)でWhiteと同じため省略
sr = new System.IO.StreamReader(fnameR, System.Text.Encoding.GetEncoding("shift-jis"));
k = 0;
while (sr.Peek() >= 0)
{
dat = sr.ReadLine(); sbuf = dat.Split(delim);
colname[k] = sbuf[0];
k = k + 1;
}
sr.Close();
sw.WriteLine("Web カラー 140 色(色名,16 進表示,RGB 値)
");
sw.WriteLine("");
sw.WriteLine("");
k = 0;
for (i = 0; i <= 27; i++)
{
sw.WriteLine("");
for (j = 0; j <= 4; j++)
{
rr = Color.FromName(colname[k]).R;
gg = Color.FromName(colname[k]).G;
bb = Color.FromName(colname[k]).B;
colrgb = "(" + rr.ToString() + "," + gg.ToString() + "," + bb.ToString() + ")";
col_16 = "#" + rr.ToString("X2") + gg.ToString("X2") + bb.ToString("X2");
sw.WriteLine("" + colname[k] + " " + col_16 + " " + colrgb + " | ");
k = k + 1;
}
sw.WriteLine("
");
}
sw.WriteLine("
");
//*******************************************************************
sw.WriteLine("");
sw.WriteLine("");
sw.Close();
//*******************************************************************
//cssファイル出力
sw = new System.IO.StreamWriter(fnameW2, false, System.Text.Encoding.GetEncoding("shift-jis"));
sw.WriteLine("body{background-color:#2F4F4F;color:#ffffff;}");
sw.WriteLine("p.cline{text-align:center;}");
sw.WriteLine("table.tbl{background-color:#ffffff;text-align:center;font-size:0.8em;font-weight:bold;line-height:120%;}");
for (k = 0; k <= 139; k++)
{
//色名をrgb値に変換
rr = Color.FromName(colname[k]).R;
gg = Color.FromName(colname[k]).G;
bb = Color.FromName(colname[k]).B;
colrgb = "rgb(" + rr.ToString() + "," + gg.ToString() + "," + bb.ToString() + ")";
col_16 = "#" + rr.ToString("X2") + gg.ToString("X2") + bb.ToString("X2");
//バックカラーに応じた文字色の選定
num = (int)rr + (int)gg + (int)bb;
if (num < 400)
{
ic = 1;
if (200 < (int)gg && (int)bb < 128) ic = 0;
}
else
{
ic = 0;
if ((int)gg < 150 && 200 < (int)bb) ic = 1;
if (200 < (int)rr && ((int)gg < 150 && 200 < (int)bb)) ic = 0;
}
switch (ic)
{
case 0: strcol = "#000000"; break;
case 1: strcol = "#ffffff"; break;
}
//バックカラーのrgb指定と文字色の指定書き込み
switch(scase){
case "rgb": sw.WriteLine("td.vbcol" + k.ToString("000") + "{background-color:" + colrgb + ";color:" + strcol + ";}"); break;
case "_16": sw.WriteLine("td.vbcol" + k.ToString("000") + "{background-color:" + col_16 + ";color:" + strcol + ";}"); break;
}
}
sw.Close();
this.Width = 800;
this.Height = 600;
webBrowser1.Url = new Uri(toolStripLabel1.Text);
}
//------------------------------------------------------------------
private void toolStripButton2_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start(toolStripLabel1.Text);
}
//------------------------------------------------------------------
}
}