2010-09-07 32 views
6

Tôi cần tạo hình ảnh có nền trong suốt trong .NETCF, tôi sử dụng màu đỏ tươi làm nền mà tôi muốn làm trong suốt. Cách tôi đã cố gắng để làm điều này là để ghi đè lênPaint(). Nhưng tôi không thể có được nền trong suốt? Dưới đây là những gì tôi có:Minh bạch trong khung nhỏ gọn

protected override void OnPaint(PaintEventArgs e) 
{ 
    Graphics g = e.Graphics; 

    ImageAttributes imageAttributs = new ImageAttributes(); 
    imageAttributs.SetColorKey(Color.FromArgb(255, 0, 255), 
     Color.FromArgb(255, 0, 255)); 
    g.DrawImage(cross, crossRect, 200, 10, cross.Width, cross.Height, 
     GraphicsUnit.Pixel, imageAttributs); 

    base.OnPaint(e); 
} 

Nhưng khi tôi cố gắng đưa ImageAttributes hình ảnh của tôi không được vẽ?

Trả lời

9

Ah, minh bạch trong CF. Giờ và ngày mà người ta có thể (và đã làm) lãng phí về điều này. Trước tiên, bạn có thể cung cấp cho chúng tôi thêm một chút thông tin về những hình ảnh bạn đang sử dụng (bitmap, png, v.v.) nhưng chúng tôi có thể suy luận một chút về nó từ bài đăng của bạn. Chúng tôi cũng cần phải biết nếu điều này là trong một container trẻ em (như bên trong một khung, bảng điều khiển, vv).

Tính minh bạch của màu sắc chắc chắn được hỗ trợ (đã từ 2.0 - thậm chí có thể sớm hơn). Vấn đề ở đây là bạn sẽ nhận được cha mẹ "chảy máu qua" nếu bạn đang ở trong một đứa trẻ. Điều này dường như là những gì bạn đang cố gắng, nhưng nó không hoàn toàn rõ ràng với tôi vì vậy tôi có một vài câu hỏi tiếp theo để làm rõ.

  • Ghi đè biểu mẫu OnPaint hoặc điều khiển tùy chỉnh?
  • Tại sao bạn gọi cơ sở OnPaint() sau công việc của bạn (trái ngược với trước hay không)?
  • Bạn đã ghi đè OnPaintBackground chưa?

Tôi đoán ngay bây giờ là bạn có một số lỗi theo cách bạn gọi mọi thứ, nhưng chúng tôi không có đủ mã để phát hiện ra.

Dưới đây là một vài nguồn lực thêm về hội họa và tính minh bạch:

Có thêm nguồn lực cho các công cụ alpha-channel (không đơn giản trong CF), nhưng s ince có vẻ như bạn đang thử phím màu, điều này là đủ.

+0

trong những trường hợp đơn giản, tại sao không chỉ sử dụng this.pnlMyPanel.BackColor = this.BackColor? – hellboy

3

Khung nhỏ gọn không hỗ trợ tính minh bạch - bạn có thể đạt được hỗ trợ thông qua giao diện COM interop. Chris Lorton có một số very good blog post về khả năng mở rộng trên khung công tác nhỏ gọn.

1

Dường như OpenNETCF cũng đã quản lý các trình bao bọc xung quanh điều này. Tôi chắc chắn Chris Tacke có thể bình luận thêm về điều này. Anh ấy có vẻ khá tích cực trên trang web này, nhưng có vẻ như đã đánh bại anh ấy với trang này :)

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