none
WPFでImageのSourceにBitmapを渡す RRS feed

  • 質問

  • Listviewに画像とテキストを表示したいのですが、ファイルのパスをSourceに入れるとうまくいくのですがBitmapオブジェクトを入れるとエラーになり表示出来ません。

    XAML

    <Window.Resources>
    
      <DataTemplate x:Key="DisplayImage">
    
       <Image Width="18" Height="18" Name="Img" Source="{Binding [0]}"/>
    
       </DataTemplate>
    
     </Window.Resources>
    
    <ListView Grid.Row="1" HorizontalAlignment="Stretch" Name="ListView1" VerticalAlignment="Stretch">
    
       <ListView.View>
    
        <GridView>
    
         <GridViewColumn CellTemplate="{StaticResource DisplayImage}"/>
    
         <GridViewColumn Header="名前" DisplayMemberBinding="{Binding [1]}"/>
    
         <GridViewColumn Header="ファイル名" DisplayMemberBinding="{Binding [2]}"/>
    
         <GridViewColumn Header="コマンドライン" DisplayMemberBinding="{Binding [3]}"/>
    
         <GridViewColumn Header="アイコンファイル" DisplayMemberBinding="{Binding [4]}"/>
    
        </GridView>
    
       </ListView.View>
    
      </ListView>

    アイテム追加部分

    ListView1.Items.Add({System.Drawing.Icon.ExtractAssociatedIcon("ファイル名.exe"), "名前", "ファイル名", "コマンドライン", "ファイル名.exe"})
    
    
    exeファイルからアイコンを取得するので、Sourceにファイル名を入れても表示できないのでBitmapオブジェクトで処理をしたいのですができるだけファイルに書きこんでそのファイルを開く方法は使いたくないのですがやり方が分かる方よろしくお願いします。
    2010年12月22日 13:41

回答

すべての返信

  • 下記URLが参考になるかもしれません。

    http://hiragino.blog74.fc2.com/blog-entry-8.html

     


    なかむら(http://d.hatena.ne.jp/griefworker)
    • 回答としてマーク Kazuki Oishi 2010年12月23日 1:47
    2010年12月22日 14:22
  • ありがとうございます!!リンク先のページを参考に変更したところ、うまくいきました。

    変更点

    Dim ico As Icon = icon_512'リソースにあるアイコンを
    Dim bitmapimg As Bitmap = icon_512.ToBitmap'リソースにあるアイコンをBitmapに変換
    ListView1.Items.Add({System.Windows.Interop.Imaging.CreateBitmapSourceFromHIcon(ico.Handle, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()), "名前", "ファイル名", "コマンドライン", "test.png"})'Iconを変換する
    ListView1.Items.Add({System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(bitmapimg.GetHbitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()), "名前", "ファイル名", "コマンドライン", "test.png"})'Bitmapを変換する
    

    Iconから変換する方法とBitmapから変換する方法があるので両方使えます。

    2010年12月23日 1:41