スライド 1

Similar documents
C#の基本2 ~プログラムの制御構造~

C#の基本

ICONファイルフォーマット

Prog2_15th

PowerPoint プレゼンテーション

Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバー

PowerPoint プレゼンテーション

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの

ファイル操作

Prog2_2nd

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

Prog2_12th

プロセス間通信

グラフィックス

// // GENES Version 1.00 突然変異と自然

アプリケーション

平成 30 年度 プログラミング研修講座 岩手県立総合教育センター

ウィンドウ操作 応用

グラフィックトレーニング 概要.NET のグラフィック描画は どんなことができるのでしょうか? グラフィックオブジェクトやグラフィック環境 概念を理解するためには クラスを使って馴れることが近道です 本 書に記載されているコードをカットアンドペーストして 一つ一つの機能を体験してください 前提 グラ

Prog2_4th

D:\Documents\Visual Studio 2015\Projects\MyHomePage 用サンプル \ExcelAndWord\ExcelAndWord\MainForm.cs 1 /* */ Excel や Word とやりとりする ~9,20 仕様 Excel

ファイル操作-バイナリファイル

ファイル監視

画像閲覧プログラム

目次 はじめに... 3 システムの必要条件... 4 ライセンス認証... 4 アクティベーション... 6 開発... 7 手順 1. アプリケーションの作成... 7 手順 2. データソースの作成と代入... 7 手順 3. テンプレートの作成 手順 4. レポートビューアの追加

Microsoft PowerPoint - prog03.ppt

Microsoft PowerPoint - visualprogram.ppt

Microsoft PowerPoint - kougi6.ppt

Microsoft Word - VB.doc

Bitmap for WinForms

PowerPoint プレゼンテーション

...Visual Studio 2015\Projects\MyHomePage 用サンプル \Database(Access2)\Database(Access2)\MainForm.cs 2 れを含めておかないと Database への更新がきかない oadp.fill(dtbl); dgvk

cp-7. 配列

※ ポイント ※

テキストファイルの入出力1

プログラミング入門1

Abstract Kinect for Windows RGB Kinect for Windows v Kinect for Windows v2

Microsoft PowerPoint - prog04.ppt

ICONファイルフォーマット

2006年10月5日(木)実施

ガイダンス

DEMO1 まずはやってみよう アクティビティをダブルクリック 作成 - プロジェクト C# => Workflow CodeActivity をぽとぺ シーケンシャルと ステートマシン それぞれのコ ンソールアプリ あとライブラリがある びっくりマークは足りていないあかし プロパティをみると判別で

ブロック パニック

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

プログラミング基礎I(再)

印刷

平成 29 年度卒業研究 初心者のためのゲームプログラミング用 教材の開発 函館工業高等専門学校生産システム工学科情報コース 5 年 25 番細見政央指導教員東海林智也

Prog1_12th

Microsoft PowerPoint - prog06.ppt

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

GUIプログラムⅣ

VB.NET解説

ガイダンス

26 editor.putint(pref_count_key, executecount); 27 // 変更した Preference を確定させる 28 editor.commit(); 29 } (c) 実行の様子実装して実行した様子を図 1 と図 2 に示す. 一度実行するごとに, カウン

Microsoft PowerPoint - 第3回目.ppt [互換モード]

Microsoft PowerPoint - 14th.ppt [互換モード]

Microsoft PowerPoint - adi05.ppt [互換モード]

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

ガイダンス

PowerPoint プレゼンテーション

Microsoft Word - Cプログラミング演習(9)

Microsoft Word -

データアダプタ概要

Microsoft PowerPoint - prog04.ppt

スレッド操作 タイマー

A, K, Q, J, 10, 9, 8, 7, 6, 5, 4, 3,

Microsoft PowerPoint - lec06 [互換モード]

アクション講座 第1回目

Assignment_.java /////////////////////////////////////////////////////////////////////// // 課題 星の画像がマウスカーソルを追従するコードを作成しなさい 次 ///////////////////

PowerPoint プレゼンテーション

スライド 1

Week 1 理解度確認クイズ解答 解説 問題 1 (4 2 点 =8 点 ) 以下の各問いに答えよ 問題 bit 版の Windows8.1 に Java をインストールする時 必要なパッケージはどれか 但し Java のコンパイルができる環境をインストールするものとする 1. jdk

JavaプログラミングⅠ

Microsoft Word - VBA基礎(6).docx

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

ブロック崩し風テニス

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

PowerPoint プレゼンテーション

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

Windows Phone アプリケーション開発 写真加工アプリケーションの作成 日本マイクロソフト株式会社 デベロッパー & プラットフォーム統括本部監修

やさしくPDFへ文字入力 フォーム入力用 v.3.0 簡易操作マニュアル

gengo1-12

Microsoft PowerPoint - kougi2.ppt

メソッドのまとめ

2 回路図

ガイダンス

Microsoft PowerPoint - prog09.ppt

Prog2_10th

Prog2_9th

Microsoft PowerPoint - prog09.ppt

pp2018-pp9base

MVP for VB が語る C# 入門

基礎プログラミング2015

Prog1_6th

演算増幅器

JavaプログラミングⅠ

02: 変数と標準入出力

PowerPoint プレゼンテーション

プログラミング入門1

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

Transcription:

C# の基本 ~ ファイル読み込み ~

今回学ぶ事 今回はファイル読み書きに必要 BinaryReader クラスについて記載する ファイル参照ダイアログである OpenFileDialog クラスについても理解を深める また Bitmap クラスを用いた Bitmap ファイルの読み込み方法についても学ぶ

フォーム作り まず label picturebox を配置する ツールボックスより左クリックで選択する そのまま フォーム上を左クリックすると設置することができる

フォーム作り picturebox を右クリック プロパティより Size の値を 256,256 に変更する 256,256 に変更

フォーム作り button1 picturebox1

今回作るプログラム バイナリデータを読み込んで画像を表示するプログラム ファイルにはプログラムフォルダ内の bone1~6 を使用する

コード記述 button1をダブルクリックし Private void button1_click(object sender, EventArgs e を表示させる コード全体に関してはprogram4aの Private void button1_click(object sender, EventArgs e) の中を参照する

コード解説 OpenFileDialog クラス OpenFileDialog ofd = new OpenFileDialog(); ファイル参照のダイアログのクラス つまり 以下の様なフォームの事

コード解説 int[,] img = new int[256, 256]; 256 256 の 2 次元の配列を宣言する (Lecture3 で解説済み )

コード解説 ShowDialog メソッド if (ofd.showdialog() == DialogResult.OK){~} OpenFileDialog クラスである ofd を ShowDialog メソッドを用いることで表示させる事が出来る また if (ofd.showdialog() ==DialogResult.OK) は ダイアログが開かれた時に 何かファイルが選ばれたなら以下の処理を行え という判断を行っている

コード解説 BinaryReader クラス BinaryReader B = new BinaryReader(ofd.OpenFile()); BinaryReader クラスは読み込んだファイルを 1 バイト 2 バイトずつ等形式を決めて読み込む この文は OpenFileDialog クラスで選択されたファイルからデータを読み込む B というクラスを宣言したことに相当する

コード解説 BinaryReader クラス 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; using System.IO; このクラスを使うためにはコード上部に System.IO 名前空間を追加する必要がある System.IO 名前空間はファイル入出力に関するクラスが記載されている

ファイルの構造 以下に bone ファイルの構造を図示する ファイル内のデータ配列 A B C D E F G H I J 画像データ A 256+B C 256+D E 256+F G 256+H I 256+J ファイルはすべて 1 バイトのデータの配列になっている そのため 表示する画像データの値を得るためには読み込み方を工夫しなければならない

ファイルの構造 ReadByte メソッド ファイル内のデータ配列 A B C D E F G H I J 画像データ A 256+B C 256+D E 256+F G 256+H I 256+J ReadByteメソッドはファイルから1Byte 読み込み 次に読む場所を一つ進めるという働きをする関数である 例えば ReadByteメソッド1 回目はAが読み込まれ 2 回目はBが読み込まれる

ファイルの構造 ReadByte メソッド ファイル内のデータ配列 A B C D E F G H I J 画像データ A 256+B C 256+D E 256+F G 256+H I 256+J 今回欲しい情報はA 256+Bであるため B.ReadByte() * 256 + B.ReadByte(); と書くことができる これを繰り返すと欲しい情報を得ることができる

コード解説 以上の事を理解すると 以下の様なコードで 256 256 の画像の配列 img を得ることができると分かる for (int j = 0; j < 256; j++) { for (int i = 0; i < 256; i++) { img[i, j] = B.ReadByte() * 256 + B.ReadByte(); } }

コード解説 B.Close(); BinaryReader クラスは読み込み終わったらファイルを閉じる必要がある ファイルを壊さないように必ず入れるようにする

コード解説 Int max = 0; for (int j = 0; j < 256; j++) { } for (int i = 0; i < 256; i++) { if (max < img[i, j]) max = img[i, j]; } このコードではまず 整数 0が代入されているmaxを宣言する そこに img 一つ一つに対し maxより大きければ値を更新していく つまり maxにはimgの最大値が入る

コード解説 Bitmap bmp = new Bitmap(256, 256); for (int j = 0; j < 256; j++) { for (int i = 0; i < 256; i++) { int count = img[i, j] * 255 / max; Color col = Color.FromArgb(count, count, count); bmp.setpixel(i, j, col); } } 赤字以外は第 3 スライドで説明済み

コード解説 int count = Img[i, j] * 255 / max; 色の値は 0~255 でありそれを超えるとエラーとなる そのため この行では画像の値の最大値を 255 に縮小している

コード解説 picturebox1.image = bmp; picturebox1.refresh(); 画像の描画 ( 第 3 回スライドで説明済み )

Bitmap ファイルの読み込み Bitmap JPEG PNG 等の代表的な画像フォーマットに関しては Bitmap クラスを用いることにより簡単に読み取ることができる 次は このような形式の決まっている画像ファイルの読み取り方法について解説する

フォーム作り まず label picturebox を配置する ツールボックスより左クリックで選択する そのまま フォーム上を左クリックすると設置することができる

フォーム作り picturebox を右クリック プロパティより Size の値を 256,256 に変更する 256,256 に変更

フォーム作り button1 picturebox1

今回作るプログラム 選択した Bitmap,JPEG ファイルの画像を描画するプログラムを作る 選択するファイルは Bitmap,JPEG ファイルなら何でも良い 以下に プログラムフォルダ内の sample.jpg を表示させた場合の例を示す

コード記述 Button をダブルクリックすると以下の様なコードが表示される 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 test { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_click(object sender, EventArgs e) { } } }

コード記述 private void button1_click(object sender, EventArgs e) の中に以下の様なコードを記述する private void button1_click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); if (ofd.showdialog() == DialogResult.OK) { Bitmap bmp = new Bitmap(ofd.FileName); picturebox1.image = bmp; picturebox1.refresh(); } }

コード解説 OpenFileDialog ofd = new OpenFileDialog(); if (ofd.showdialog() == DialogResult.OK) { } ~ ファイル参照ダイアログの ofd を宣言し 開く を行ったなら処理を行いなさいという意味になる ( すでに解説済み )

コード解説 Bitmap クラス Bitmap bmp = new Bitmap(ofd.FileName); ここまで Bitmap ファイルは ( 幅 高さ ) で初期化していた しかし ここでは選んだ画像で初期化している このように 初期化の方法は1つではなく様々な方法がある ( この仕組みをオーバーロードと呼ぶ )

コード解説 OpenFileDialog 前半の方法では OpenFile メソッドを使用していたが 今回の方法では FileName プロパティを使用している これはどの様に使い分ければ良いのだろうか?

コード解説 OpenFileDialog OpenFile メソッドは主に 1 バイトずつ等形を決めて読み取る場合に用いる (BinaryReader クラスを使いたいときと覚えても良い ) FileName プロパティはファイルのパス ( 例 : C Users desktop) が欲しい時に用いる ( Bitmap クラスを初期化するときにはこちらが必要になる ) 詳しい使い分けは Microsoft のリファレンスを確認する

コード解説 OpenFileDialog また OpenFile() に対し FileName には () が無い これは メソッドとプロパティの違いでありこれは使いたいコードがどちらかによって () の有無が変わる

コード解説 picturebox1.image = bmp; picturebox1.refresh(); 選択した画像を示している Bitmap クラスを描画させている

まとめ 今回はファイル処理について解説を行った ここでは バイナリファイルの処理方法についてしか扱わないが テキストファイルの読み書きを行うクラスを数多くサポートされているため興味のある人は調べてみてください また Bitmap JEPG 等の形式の決まった画像ファイルの扱い方の解説も行った