[ C# / VB.NET ] DataGridView のセルにテキストを画像として描画する

Pocket

ここでは、C# と VB.NET において、DataGridView のセルにテキストを画像として描画するサンプルを掲載しています。列のタイプが DataGridViewTextBoxColumn ( テキスト ) であれば特に何の問題もありませんが、DataGridViewImageColumn ( イメージ ) の列に対して、条件によって画像とテキストを描画したい時に本サンプルが利用できるかもしれません。

ただし、あくまで画像として描画される点には留意する必要があります。

スポンサーリンク

本サンプルで得られる結果

ここで紹介するサンプルは、次のデータグリッドビューが描画されます。テキスト列は DataGridViewTextBoxColumn であり、イメージ列の行タイプは DataGridViewImageColumn です。行の高さは確認のために多少大きく ( 48 ) してあります。

イメージ列にテキストを設定するサンプルの実行結果

イメージ列にテキストを設定するサンプルの実行結果

テキストを画像としてイメージ列に設定・描画する

上記の実行結果にあるとおり、イメージ列にテキストを画像として設定・描画するサンプルコードです。詳細はサンプル内もコメントも参照ください。

VB.NET

' データグリッドビューに2行分追加
DataGridView1.Rows.Add()
DataGridView1.Rows.Add()

' 1列目を編集
DataGridView1.Rows(0).Cells(0).Value = "1行目"
DataGridView1.Rows(1).Cells(0).Value = "2行目"

' 2列目を編集
' テキストを画像として設定する

' セルの高さと幅を取得する
Dim h As Integer = DataGridView1.RowTemplate.Height
Dim w As Integer = DataGridView1.Columns(1).Width

Dim bmp1 As Bitmap = New Bitmap(w, h)
Dim graphics1 As Graphics = Graphics.FromImage(bmp1)
' テキストを画像として貼り付け
graphics1.DrawString("テスト", New Font("Tahoma", 10.5F), Brushes.Black, 5, 5)
DataGridView1.Rows(0).Cells(1).Value = bmp1

Dim bmp2 As Bitmap = New Bitmap(w, h)
Dim graphics2 As Graphics = Graphics.FromImage(bmp2)

' 画像を貼り付け
graphics2.DrawImage(My.Resources.矢口真里, New Point(0, 0))

' テキストを画像の上から貼り付け
graphics2.DrawString("復活したの?", New Font("Tahoma", 10.5F), Brushes.Blue, 5, 5)
DataGridView1.Rows(1).Cells(1).Value = bmp2

' 確認しやすいように選択を解除
DataGridView1.ClearSelection()

C#

// データグリッドビューに2行分追加
dataGridView1.Rows.Add();
dataGridView1.Rows.Add();

// 1列目を編集
dataGridView1.Rows[0].Cells[0].Value = "1行目";
dataGridView1.Rows[1].Cells[0].Value = "2行目";

// 2列目を編集
// テキストを画像として設定する

// セルの高さと幅を取得する
int h = dataGridView1.RowTemplate.Height;
int w = dataGridView1.Columns[1].Width;

Bitmap bmp1 = new Bitmap(w, h);
Graphics graphics1 = Graphics.FromImage(bmp1);
// テキストを画像として貼り付け
graphics1.DrawString("テスト", new Font("Tahoma", 10.5f), Brushes.Black, 5, 5);
dataGridView1.Rows[0].Cells[1].Value = bmp1;

Bitmap bmp2 = new Bitmap(w, h);
Graphics graphics2 = Graphics.FromImage(bmp2);

// 画像を貼り付け
graphics2.DrawImage(Properties.Resources.矢口真里, new Point(0, 0));
// テキストを画像の上から貼り付け
graphics2.DrawString("復活したの?", new Font("Tahoma", 10.5f), Brushes.Blue, 5, 5);
dataGridView1.Rows[1].Cells[1].Value = bmp2;

// 確認しやすいように選択を解除
dataGridView1.ClearSelection();

スポンサーリンク

Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>