2010-09-20 7 views
5

Tôi đang cố gắng tạo danh sách tệp giống như một danh sách tệp trong hộp văn bản có định dạng richtext.Biểu tượng cho hình ảnh - sự cố minh bạch

Nó sẽ trông giống như một nhà thám hiểm treeview. Mã của tôi có thể thay đổi kích thước biểu tượng, nhưng độ trong suốt bị thiếu (nền xám nhạt thay vì độ trong suốt). Tôi cần thay đổi gì ở đây? Định dạng hình ảnh có sai không? Có cách nào tốt hơn để thêm hình ảnh vào richtextbox không?

// 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(); 

Ví dụ:

alt text

Edit:

tôi đã tìm ra rằng hình ảnh là minh bạch, nhưng sử dụng Clipboard.SetImage() không công bố nó như là hình ảnh trong suốt.

Bất kỳ ý tưởng nào và tại sao tôi có thể làm gì để khắc phục sự cố? Tôi có cần chuyển sang điều khiển hộp văn bản khác không?

+0

Tôi không hiểu. Tại sao không thực sự sử dụng TreeView? ImageList thực hiện các biểu tượng mà không gặp rắc rối. –

+0

Bởi vì tôi cần phải in nó - nếu tôi sử dụng một treeview nó là một vấn đề với nhiều trang ... Và tôi đang sử dụng một imagelist như bộ nhớ cache - đây chỉ là một phần với vấn đề hiện tại. –

Trả lời

0

Hãy thử

img.MakeTransparent(); 

sau khi bạn contruct nó.

Lưu ý rằng điều này sẽ thay đổi PixelFormat thành Format32bppArgb.

+0

Tôi đã thử rằng trước đây - không có thay đổi ... Tôi đã thử: img.MakeTransparent (Color.Transparent) quá ... –

2

Tôi đã có một số may mắn đi qua Đồ họa.

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

Điều này sẽ rút ra biểu tượng minh bạch cho Bitmap.

+0

Tôi đã tìm ra rằng hình ảnh là minh bạch, nhưng bằng cách sử dụng Clipboard.SetImage() doesn không xuất bản nó dưới dạng hình ảnh trong suốt. –

+1

Không hiệu quả với tôi, vẫn nhận được nền đen – Prat