人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VC# .NETのListViewコントロールについて質問です。

現在、エクスプローラライクなアプリケーションを作成しています。

そこで質問です。
エクスプローラ上でアイコンを選択し、切り取りをするとアイコンが半透明になるのですが、これを.NET Frameworkではどうすれば再現出来るのでしょうか?

ListViewItemには「Alpha」みたいなプロパティがあるわけでもなく、また、参考になりそうな文献がなくて困っています。

⇒環境
Microsoft Visual C# 2008 Express Edition

●質問者: kiku-_-san
●カテゴリ:コンピュータ
✍キーワード: .NET .NET Framework Alpha C# EXPRESS
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ardarim
●35ポイント

ListViewItemには、複数のアイコンイメージ(ImageList)を割り当てておくことができます。このImageListに、通常アイコン、切取り時のアイコン、など様々な状態の場合のアイコンをまとめて登録しておき、ImageIndexでどのアイコンを実際に表示するかを切り替えます。

切取り時半透明にしたいのであれば、あらかじめ半透明のアイコン画像を作ってImageListに追加する必要があります。


そうして通常は通常アイコン(0)にしておき、切取り処理を行った時にはそのアイテムのImageIndexを変更して切取りアイコンの番号に変更します。

◎質問者からの返答

ご回答頂きありがとうございます。

勉強になります。

ただアイコンに関しては作るのではなく、ファイルの拡張子を元にシステムから取得しています。(例えば、環境によってAVIファイルのアイコンが違うというケースがあるので)

アイコンの取得方法を参考にしているページは下記のURLにあるソースです。

http://palepoli.skr.jp/blog_src/20080505.html

この場合、半透明のアイコンはどうやって取得したら良いのでしょうか?

システムから取得出来るのであれば別の方法でもかまいません。


2 ● ardarim
●35ポイント

ネイティブであればLVM_CREATEDRAGIMAGEを使って半透明のイメージリストを作ることができますが、C#.NETでは用意されていないようです。


P/Invokeを使ってLVM_CREATEDRAGEIMAGEを呼び出すしかなさそうですが、ちょっと面倒ですね。


サンプルかけなくて申し訳ありませんが、参考になりそうな資料だけピックアップしておきます。

ListViewのColumnの順番を取得、設定する: .NET Tips: C#, VB.NET, Visual Studio:SendMessageを使ってLVM_xxxxxを呼び出す方法

ImageList_GetIcon:LVM_CREATEDRAGIMAGEで取得したHIMAGELISTハンドルからHICONハンドルを取り出す

Imaging.CreateBitmapSourceFromHIcon メソッド (System.Windows.Interop):HICONからイメージを取り出す

◎質問者からの返答

途中まで書いてみたのですが、SendMessageの引数に何を指定すればいいのか分からないので断念していまいました。。。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ