2010-09-20 9 views
5

Próbuję utworzyć listę plików w stylu drzewa w polu RichText.Ikona do obrazu - problem z przezroczystością

Powinno to wyglądać jak drzewo genealogiczne eksploratora. Mój kod jest w stanie zmienić rozmiar ikony, ale brakuje przejrzystości (jasnoszare tło zamiast przezroczystości). Co muszę zmienić tutaj? Czy format obrazu jest nieprawidłowy? Czy istnieje lepszy sposób na dodanie obrazu do pliku 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(); 

Przykład:

alt text

Edit:

Mam zorientowali się, że obraz jest przejrzysty, ale przy użyciu Clipboard.SetImage() nie publikuje je jako przejrzysty obraz.

Wszelkie pomysły, dlaczego i co mogę zrobić, aby to naprawić? Czy muszę przełączyć się na kontrolę differn textbox?

+0

Nie rozumiem. Dlaczego właściwie nie korzystać z TreeView? ImageList robi ikony bez kłopotów. –

+0

Bo muszę go wydrukować - jeśli korzystam z widoku drzewa to problem z wieloma stronami ... I używam obrazka jako pamięci podręcznej - to tylko część z aktualnym problemem. –

Odpowiedz

0

Spróbuj

img.MakeTransparent(); 

po contruct go.

Pamiętaj, że zmieni to PixelFormat na Format32bppArgb.

+0

Próbowałem już wcześniej - bez zmian ... Próbowałem: img.MakeTransparent (zbyt kolorowe) ... –

2

Miałem trochę szczęścia przechodząc przez Graphics.

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

Powoduje rysowanie ikony z przezroczystością do bitmapy.

+0

Stwierdziłem, że obraz jest przezroczysty, ale za pomocą Clipboard.SetImage() doesn opublikuj go jako przezroczysty obraz. –

+1

Nie działa dla mnie, wciąż ma czarne tło – Prat

Powiązane problemy