2011-06-22 14 views
8

Istnieje kilka miejsc, w których można znaleźć informacje o tym, jak uzyskać ikonę z rozszerzenia pliku, takiego jak this jeden ijeden. Po kilku godzinach gry z tego rodzaju projektów udało mi się zbudować coś takiego:Uzyskaj dużą ikonę z rozszerzenia pliku

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

wykonanie tego przycisku dostaje mnie:

enter image description here

ale staram się rzeczywiście dostać duża ikona. Zauważ, jak ikony na oknach są znacznie większe:

enter image description here

Jak mogę dostać tę ikonę zamiast mniejszy. Spędziłem tyle czasu na zmianie innych programów. Ponadto chciałbym, aby działało to z wpf, a większość przykładów to formularze Windows. Byłbym wdzięczny, gdybym mógł uzyskać przykład, jak wyodrębnić ikonę plików zamiast modyfikowania i całego projektu. Jeśli to nie jest możliwe, byłoby to bardzo pomocne i będę wdzięczny. Po prostu nie jestem zbyt dobrym programistą, a modyfikowanie innych przykładów zajęło mi dużo czasu.

+0

Spróbuj zamanifestować aplikację, aby używała wspólnych elementów sterujących w wersji 6 ("Włączono motywy * xp *"). Prawdopodobnie nie będzie tu problemem; ale wystąpił problem z api listy obrazów systemowych, które nie zwracały dużych ikon, chyba że użyto v6. –

Odpowiedz

2

Kod jesteś przedstawieniu używa tylko 2 rozmiarach:

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

aby uzyskać rozmiar extra_large, trzeba dodać własne określenie (i dodać kolejne wyliczenia za telefon funkcje):

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

lub jeśli po prostu chcesz szybko naprawić, wymienić 0x000000000 z 0x000000002 w oryginalnym dużym def inicjał.

Oto wszystkie rozmiary ikon: http://msdn.microsoft.com/en-us/library/windows/desktop/bb762185%28v=vs.85%29.aspx

0

Nie można zrobić ShGetFileInfo powrócić extralarge i Jumbo ikony.

Zamiast

1) Zaproszenie ShGetFileInfo z flagą SysIconIndex (0x000004000) 2) uzyskać Imagelist system z właściwego rozmiaru używając ShGetImageList 3) Get HICON użyciu ImageList_GetIcon i wartość .iIcon z SHFILEINFO.

Powiązane problemy