2010-09-20 23 views
5

Estoy intentando crear una vista de árbol como lista de archivos en un cuadro de texto enriquecido.Icono a imagen: problema de transparencia

Debería verse como una vista de árbol del explorador. Mi código es capaz de cambiar el tamaño del ícono, pero falta la transparencia (fondo gris claro en lugar de transparencia). ¿Qué necesito cambiar aquí? ¿El formato de la imagen está mal? ¿Hay alguna forma mejor de agregar una imagen a richtextbox?

// Get file info 
FileInfo f = new FileInfo("myfile.name"); 
// Get icon for fileinfo 
Icon ico = Icon.ExtractAssociatedIcon(f); 
// Convert icon to bitmap 
Bitmap bm = ico.ToBitmap(); 
// create new image with desired size 
Bitmap img = new Bitmap(16,16,PixelFormat.Frmat32bpRgb); 
// Create graphics with desired sized image 
Graphics g = Graphics.FormImage(img); 
// set interpolation mode 
g.InterpolationMode = InterpolationMode.HighQualityBiCubic; 
// draw/resize image 
g.DrawImage(bm, new Rectangle(0,0,16,16), new Rectangle(0, 0, bm.Width, bm,Height), GraphicalUnit.Pixel); 
// Paste to clipboard 
Clipboard.SetImage(bm); 
// Paste in RichtextBox 
rtb.Paste(); 

Ejemplo:

alt text

Editar:

He descubierto que la imagen es transparente, pero utilizando Clipboard.SetImage() no publica como imagen transparente.

¿Alguna idea de por qué y qué puedo hacer para solucionarlo? ¿Debo cambiar a un control de cuadro de texto diferente?

+0

No lo entiendo. ¿Por qué no usar realmente un TreeView? ImageList hace iconos sin problemas. –

+0

Porque necesito imprimirlo - si uso una vista en árbol es un problema con varias páginas ... Y estoy usando una lista de imágenes como caché - esta es solo la parte del problema actual. –

Respuesta

0

Trate

img.MakeTransparent(); 

después Contruct ella.

Tenga en cuenta que esto cambiará su PixelFormat a Format32bppArgb.

+0

Lo he intentado antes, sin cambios ... Lo he intentado: img.MakeTransparent (Color.Transparent) también ... –

2

He tenido algo de suerte pasando por Graphics.

Bitmap b = new Bitmap(pbAssetLoaded.Width, pbAssetLoaded.Height); 
using (Graphics g = Graphics.FromImage(b)) 
{ 
    g.DrawIcon(SystemIcons.Information, 0, 0); 
} 

Esto dibuja el icono con transparencia en el mapa de bits.

+0

He descubierto que la imagen es transparente, pero usando Clipboard.SetImage() doesn publicarlo como imagen transparente. –

+1

No funcionó para mí, aún obteniendo un fondo negro – Prat

Cuestiones relacionadas