目次
前
次
ボタン処理
ボタンは、3種あります。
各々のボタンで実現する処理を説明します。
Load
Loadボタンのクリックで実現したい内容は、以下です。
- テキストファイルから全輝度情報を入力
- 輝度情報を、ピクセルのRGB値として設定
- 全輝度情報を出力
実現すべき内容が確定すれば、より小さいレベル処理に
分けていきます。
テキストファイルからデータを入力するためには
オープンファイルダイアログボックスを使い、
ディレクトリとファイル名を含んだパス名を指定。
パス名を指定できた時点で、StreamReaderでテキストファイル
全輝度情報を文字列として入力します。
1ラインごとの輝度情報から、ピクセルの色情報を決定します。
赤、青、緑の3成分値をすべて同じにすると、モノクロの画像
(256階調)を生成できます。
まとめると、次のコードになります。
private void btnLoad_Click(object sender, EventArgs e)
{
string sline;
string stmp;
int tmp;
int x, y;
if (openFileDlg.ShowDialog() == DialogResult.OK)
{
// get file name
gFName = openFileDlg.FileName;
// get context of text file
string stext ;
StreamReader sr = new StreamReader(gFName, Encoding.Default);
stext = sr.ReadToEnd();
sr.Close();
// show file name
lblFileName.Text = gFName;
// generate area
Bitmap bmp = new Bitmap(xlast, ylast);
// store data to area
for ( y = 0 ; y < ylast ; y++ )
{
// get 1 line
sline = stext.Substring(y*ysize,ysize);
//MessageBox.Show(sline, "line");
for ( x = 0 ; x < xlast ; x++ )
{
// get value
stmp = sline.Substring(3*x,2);
// convert
tmp = hex2digit(stmp[0]) * 16 + hex2digit(stmp[1]);
// store pixel data
bmp.SetPixel(x,y,Color.FromArgb(255,tmp,tmp,tmp));
}
}
// show
picBox.Image = bmp ;
}
}
ファイル処理、グラフィック処理は、別の章で説明します。
Save
表示されている画像を、フォーマットを指定して
ファイルに保存する処理を担当します。
ディレクトリとファイル名を含むパス名を、セーブ
ファイルダイアログボックスから取得します。
フォーマット指定で、画像データをファイルに
保存する場合は、次の指定が必要です。
using System.Drawing.Imaging;
画像フォーマットは、次の4種類にします。
- BMP形式
- GIF形式
- JPEG形式
- TIFF形式
異なる画像フォーマットにするのは、ディスク容量を節約
するためです。BMP形式ファイルを扱えないOSとのやりとり
も可能としたいので、画像フォーマットを指定できるように
しました。
どの画像フォーマットを指定したのかを、フィルタインデックス
を利用して認識します。
まとめると、次のコードになります。
private void btnSave_Click(object sender, EventArgs e)
{
if (saveFileDlg.ShowDialog() == DialogResult.OK)
{
//
string fname = saveFileDlg.FileName ;
// save
int idx = saveFileDlg.FilterIndex;
switch ( idx ) {
case 1 : picBox.Image.Save(fname, ImageFormat.Bmp); break;
case 2 : picBox.Image.Save(fname, ImageFormat.Gif); break;
case 3 : picBox.Image.Save(fname, ImageFormat.Jpeg); break;
case 4 : picBox.Image.Save(fname, ImageFormat.Tiff); break;
}
}
}
ファイル処理は、別の章で説明します。
Exit
アプリケーションを終了します。
アプリケーションを終了するので、そのまま
オブジェクトApplicationのもつメソッドExit
を使います。
private void btnExit_Click(object sender, EventArgs e)
{
Application.Exit();
}
目次
前
次