ここでは、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;
}
}
}