タイトル | : Re: DataGridViewセルへ表示された画像のパス取得 |
記事No | : 9397 |
投稿日 | : 2009/09/11(Fri) 09:47 |
投稿者 | : 魔界の仮面弁士 |
> 開発環境 > VS2005 C# ここは、VB の掲示板ですよ。
> ListViewに表示された画像一覧から > ドラッグ&ドロップでDataGridViewのセルに画像を貼り付けています。 DoDragDrop に渡すオブジェクトは、どのようなデータでしょうか。
画像パスの文字列ですか? Image 継承クラス? それともListViewItem クラス? あるいは、独自に作成した構造体/クラスなのでしょうか?
> 貼り付ける前に画像をStreamしてBitMapオブジェクトにしています。 BitMap → Bitmap ですよね。(^^; C# であるならば、大文字小文字の違いには気をつけないと。VB ならば許容できますが。
> Bitmap bmp = new ("画像フルパス") そのような構文は使えないと思いますよ。
C# 2008 の開発段階で、その省略構文が検討された事もあったけれども、 最終的に var bmp = new Bitmap("画像フルパス"); 構文が採用されたはず…。
で。このコードを見る限り、『画像をStreamして』という処理が 見当たらないのですが、それはどこにあるのでしょうか? もしかして、Bitmap(String) コンストラクタを呼び出しているのではなく、 Bitmap(Stream) コンストラクタを呼び出しているのでしょうか? それとも順番が逆で、Bitmap を MemoryStream 等にシリアライズしているのでしょうか?
> string s = DataGridView[x],y].Value as string これも、文法的におかしいです。
> セルに描画されたbmpのフルパスを、セルをクリックしたときに表示させるには > どうすれば良いのか教えていただきたいです。 この場合のセルは、画像表示用の DataGridViewImageCell ですね?
Bitmap クラスには、元画像のパスが保存されていないので、今の作りでは無理ですが、 パスを一緒に保持しておけば、目的を果たせるかと思います。
<C#> // 割り当て Bitmap bmp = new Bitmap(bitmapPath); bmp.Tag = bitmapPath; dataGridView1[x, y].Value = bmp;
// 取り出し Bitmap bmp = dataGridView1[x, y].Value as Bitmap; lable1.Text = (bmp != null) ? bmp.Tag as string : string.Empty;
<VB> ' 割り当て Dim bmp As New Bitmap(bitmapPath) bmp.Tag = bitmapPath DataGridView1(x, y).Value = bmp
' 取り出し Dim bmp As Bitmap = TryCast(DataGridView1(x, y).Value, Bitmap) If bmp Is Nothing Then Lable1.Text = "" Else Label1.Text = CStr(bmp.Tag) End If
|