2011-06-22 25 views
8

Có một số địa điểm nói về cách nhận biểu tượng từ tiện ích mở rộng tệp như this một và this other một. Sau nhiều giờ chơi xung quanh với các loại hình dự án tôi đã được quản lý để xây dựng một cái gì đó như:Nhận biểu tượng lớn từ tiện ích mở rộng tập tin

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

việc thực hiện các nút mà được tôi:

enter image description here

nhưng tôi đang cố gắng để thực sự nhận được biểu tượng lớn. Lưu ý cách các biểu tượng trên cửa sổ có kích thước lớn hơn nhiều:

enter image description here

Làm thế nào tôi có thể nhận được rằng biểu tượng thay vì một nhỏ hơn. Tôi đã dành quá nhiều thời gian để thay đổi các chương trình khác. Hơn nữa tôi sẽ thích làm cho nó hoạt động với wpf và hầu hết các ví dụ đều có dạng cửa sổ. Tôi sẽ đánh giá cao nếu tôi có thể có được một ví dụ về làm thế nào để trích xuất một biểu tượng tập tin thay vì sửa đổi và toàn bộ dự án. Nếu điều đó là không thể mà vẫn sẽ rất hữu ích và tôi sẽ đánh giá cao. Nó chỉ là tôi không phải là tốt của một lập trình viên và nó đã cho tôi rất nhiều thời gian để sửa đổi các ví dụ khác.

+0

Thử hiển thị ứng dụng của bạn để sử dụng các điều khiển chung phiên bản 6 ("* xp themes enabled *"). Nó có thể sẽ không là vấn đề ở đây; nhưng có một vấn đề với danh sách hình ảnh hệ thống api không trả lại các biểu tượng lớn trừ khi v6 được sử dụng. –

Trả lời

2

Mã bạn chỉ đang tham khảo sử dụng 2 kích cỡ:

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

để có được kích thước extra_large, bạn cần phải thêm của riêng bạn xác định (và thêm enum khác để gọi chức năng):

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

hoặc nếu bạn chỉ muốn có một sửa chữa nhanh chóng, thay thế 0x000000000 với 0x000000002 trong def lớn gốc inition.

Dưới đây là tất cả các kích thước biểu tượng: http://msdn.microsoft.com/en-us/library/windows/desktop/bb762185%28v=vs.85%29.aspx

0

Bạn không thể làm cho ShGetFileInfo trở ExtraLarge và các biểu tượng Jumbo.

Thay vào đó,

1) Gọi ShGetFileInfo với SysIconIndex (0x000004000) cờ 2) Lấy Hệ thống Imagelist với kích thước thích hợp sử dụng ShGetImageList 3) Lấy hIcon sử dụng ImageList_GetIcon và giá trị .iIcon từ SHFILEINFO.

Các vấn đề liên quan