2011-06-22 11 views
8

Hay varios lugares donde se habla de cómo obtener un icono de una extensión de archivo como this uno y this other uno. Después de varias horas de jugar con este tipo de proyectos que he logrado construir algo como:Obtener icono grande desde la extensión de archivo

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

la ejecución de ese botón me pone:

enter image description here

pero yo estoy tratando de conseguir en realidad el ícono grande. Nótese cómo los iconos de las ventanas son mucho más grandes:

enter image description here

¿Cómo podría conseguir que el icono en lugar de la más pequeña. He pasado tanto tiempo cambiando los otros programas. Además, me gustaría hacer que funcione con wpf y la mayoría de los ejemplos son con formularios de Windows. Agradecería que obtuviera un ejemplo de cómo extraer un ícono de archivos en lugar de modificarlo y todo el proyecto. Si eso no es posible, aún sería muy útil y lo agradeceré. Es solo que no soy tan bueno como programador y me tomó mucho tiempo modificar los otros ejemplos.

+0

Intente manifestar su aplicación para usar controles comunes versión 6 ("* xp themes enabled *"). Probablemente no sea el problema aquí; pero hubo un problema con la API de la lista de imágenes del sistema que no devolvía los íconos grandes a menos que se utilizara v6. –

Respuesta

2

El código que está haciendo referencia sólo utiliza 2 tamaños:

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

para obtener el tamaño extra_large, tiene que añadir su propia definir (y añadir otra enumeración para llamar funciones):

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

o si simplemente desea una solución rápida, reemplazar 0x000000000 con 0x000000002 en la gran definición original, inición.

Éstos son todos los tamaños de icono: http://msdn.microsoft.com/en-us/library/windows/desktop/bb762185%28v=vs.85%29.aspx

0

No se puede hacer volver SHGetFileInfo ExtraLarge y los iconos Jumbo.

En cambio,

1) Llamar SHGetFileInfo con la bandera SysIconIndex (0x000004000) 2) Obtener el ImageList del sistema con el tamaño adecuado utilizando SHGetImageList 3) Obtener el HICON usando ImageList_GetIcon y el valor de .iIcon SHFILEINFO.

Cuestiones relacionadas