ここでは、C# フォームアプリケーションで頻繁に使用されるDataGridView に行を追加するサンプルプログラムを掲載しています。
スポンサーリンク
DataGridViewRow をフォームに貼り付け
ここで紹介するサンプルコードは、フォームに貼り付けたDataGridViewコント―ロール(DataGridView1)があるものとします。また、1列目にはテキスト項目を、2列目にはイメージ項目が割り当てられているものとします。
DataGridView に列を追加するサンプルコード
では、以下のサンプルコードをご確認ください。詳細はコメントを参照ください。
string col1Str = "斎藤さんだぞ" // 追加する列1のテキスト Image col2Img; // 追加する列2の画像 // 画像をファイルから取得する using (FileStream fs = new FileStream(@”/path/to/image.jpeg”, FileMode.Open, FileAccess.Read)) { col2Img = Image.FromStream(fs); } // 追加行のインスタンス生成 DataGridViewRow newRow = new DataGridViewRow(); // セルを追加 newRow.CreateCells(DataGridView1, new object[] { col1Str, col2Img, }); // DataGridViewに行を新規追加 DataGridView1.Rows.Add(newRow);
上記のサンプルでDataGridView にテキストとイメージを含む行を追加することができますが、DataGridViewは、回転情報を含む画像を正しく表示してくれません。回転情報を無視してしまいます。
次のサンプルコードでは、画像の回転情報から画像を回転させています。
EXIF情報を元に画像を回転させる(90度、180度、360度)
上記サンプル内の画像ファイルから Image を取得している部分を以下のように修正して、画像を回転することができます。
using (FileStream fs = new FileStream(@”/path/to/image.jpeg”, FileMode.Open, FileAccess.Read)) { col2Img = Image.FromStream(fs); // 画像に付与されているEXIF情報から回転情報を取得して、画像を回転させる foreach (var item in col2Img.PropertyItems) { // 回転情報設定(0x0112; Orientationの値)以外はスキップ if (item.Id != 0x0112) { continue; } switch (item.Value[0]) { case 3: // 180度 col2Img.RotateFlip(RotateFlipType.Rotate180FlipNone); break; case 6: // 90度 col2Img.RotateFlip(RotateFlipType.Rotate90FlipNone); break; case 8: // 270度 col2Img.RotateFlip(RotateFlipType.Rotate270FlipNone); break; } } }