2011-06-22 45 views
8

thisthis otherのように、ファイル拡張子からアイコンを取得する方法についていくつかの場所があります。私のようなものを構築するために管理しているプロジェクトのこの種で遊んでの数時間後:ファイル拡張子から大きなアイコンを取得

private void addButton_Click(object sender, System.EventArgs e) 
    {   
     System.Drawing.Icon temp = IconReader.GetFileIcon(".cs", IconReader.IconSize.Large, false); 
     pictureBox1.Image = temp.ToBitmap(); 
    } 

そのボタンの実行は、私を取得します。

enter image description here

が、私は実際に取得しようとしています大きなアイコン。 Windows上のアイコンがはるかに大きいです注意してください:

enter image description here

を私が代わりに小さい方のアイコンを得ることができる方法。私は他のプログラムを変えるのに多くの時間を費やしてきました。さらに、私はwpfでそれを動作させたいと思っていて、ほとんどの例はwindows形式です。プロジェクト全体を修正する代わりに、ファイルアイコンを抽出する方法の例を得ることができれば幸いです。それが不可能な場合は、それでも非常に役に立つと私は感謝します。プログラマが役に立たないだけで、他の例を変更するのに多くの時間がかかりました。

+0

共通コントロールバージョン6(「* xp themes enabled *」)を使用するようにアプリケーションを公開してください。おそらくここで問題になることはありません。 v6が使用されていない限り、システムイメージリストAPIが大きなアイコンを返さないという問題がありました。 –

答えて

2

です:あなたが追加する必要が

public const uint SHGFI_LARGEICON = 0x000000000;  // get large icon 
public const uint SHGFI_SMALLICON = 0x000000001;  // get small icon 

がextra_largeサイズを取得するための独自の定義(および呼び出すための別の列挙型を追加機能):

public const uint SHGFI_EXTRALARGEICON = 0x000000002;  // get extra large icon 

またはあなただけの簡単な修正をしたい場合は、元大デフに0x0000000020x000000000を置き換えます起きた

は、ここですべてのアイコンのサイズです: http://msdn.microsoft.com/en-us/library/windows/desktop/bb762185%28v=vs.85%29.aspx

0

あなたはShGetFileInfoがExtraLargeとジャンボアイコンを返すことはできません。代わり

1)SysIconIndex(0x000004000)フラグ 2)3 ShGetImageList 使用して適切な大きさのシステムイメージリストを取得)ImageList_GetIconとSHFILEINFOから.iIcon値を用いHICONを取得すると通話ShGetFileInfo。

関連する問題