2009-02-05 36 views
6

Tôi đang đấu tranh để có được hình thức của tôi để có một nền trong suốt trong vb.netLàm thế nào tôi có thể thiết lập một hình thức để có một nền trong suốt

Hiện nay theo hình thức mới tôi đặt

Me.SetStyle(ControlStyles.SupportsTransparentBackColor, true) 

Nhưng vẫn biểu mẫu hiển thị dưới dạng nền màu xám mặc định

Có ai giúp được không ??

EDIT: Tôi cần các điều khiển trên biểu mẫu để có thể nhìn thấy vì vậy tôi không nghĩ rằng thiết lập Opacity xuống 0 sẽ làm việc

EDIT: Tôi đã thử các giải pháp chìa khóa minh bạch nhưng nó không hoạt động. Tôi có một hình ảnh tròn với một nền đen. OnPaint tôi thiết lập phím minh bạch cho điểm ảnh img ở 0,0, điều này sau đó lá tôi với hình ảnh tròn (mà tôi muốn) Nó ẩn nền đen nhưng tôi vẫn còn lại với hình chữ nhật màu xám mặc định của biểu mẫu.

dưới đây là đoạn code tôi có -

Public Sub New() 

    Me.SetStyle(ControlStyles.SupportsTransparentBackColor, True) 
    Me.BackColor = Color.Transparent 
    ' This call is required by the Windows Form Designer. 
    InitializeComponent() 

    ' Add any initialization after the InitializeComponent() call. 
    Me.Timer1.Start() 
End Sub 

Private Sub frmWoll_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint 

    Dim img As Bitmap = CType(Me.BackgroundImage, Bitmap) 

    img.MakeTransparent(img.GetPixel(2, 2)) 
    Me.TransparencyKey = img.GetPixel(2, 2) 
End Sub 
+0

Tôi đã thêm mã bên dưới để có được chính xác thứ bạn đang tìm kiếm. Nếu cần thêm bất kỳ điều gì, vui lòng gửi nhận xét và tôi sẽ cập nhật cùng một –

Trả lời

11

Sử dụng Độ trong suốt cho biểu mẫu trong suốt.

ví dụ:

TransparencyKey = Color.Red 
Button1.BackColor = Color.Red 

Bây giờ hãy chạy biểu mẫu, bạn sẽ thấy rằng button1 có một lỗ trong đó. Vì vậy, bằng cách sử dụng phương pháp này, bạn có thể tạo ra một hình ảnh mặt nạ trong sơn mà phần nào phải trong suốt và áp dụng hình ảnh đó để tạo thành và thì biểu mẫu bây giờ là trong suốt.

Chỉnh sửa: Xin lỗi vì trả lời muộn.

Sau đây là mã của bạn được sửa đổi cho phù hợp với yêu cầu của bạn

Public Sub New() 

    Me.SetStyle(ControlStyles.SupportsTransparentBackColor, True) 
    Me.BackColor = Color.Transparent 

    ' This call is required by the Windows Form Designer. 
    InitializeComponent() 
    ' Add any initialization after the InitializeComponent() call. 
    Dim img As Bitmap = CType(Me.BackgroundImage, Bitmap) 

    'img.MakeTransparent(img.GetPixel(2, 2)) 
    Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None 
    Me.TransparencyKey = img.GetPixel(2, 2) 
End Sub 
+0

Trong khi điều này có thể là một bài cũ, kết quả google đầu .. Một ví dụ rút ngắn có thể làm việc cho một số người chỉ đơn giản là này 'TransparencyKey = Me.BackColor' .. Nhưng chắc chắn rằng hình thức backcolor của bạn không có trong hình ảnh của bạn sử dụng hoặc bất kỳ khác điều khiển trên biểu mẫu .. Vẫn đặt màu nền của biểu mẫu để có màu không có màu – Mayhem

-2
Me.Opacity = 0 

Được cảnh báo rằng:

  1. này là dành cho toàn bộ hình thức, chứ không phải chỉ là nền. Có những công việc xung quanh để làm cho các bộ phận nhất định trở nên kinh hoàng hơn.
  2. Nó chỉ mang tính minh bạch cho psuedo, nơi nó chụp nhanh những gì đằng sau nó. Nó đủ thông minh để biết khi bạn di chuyển biểu mẫu, nhưng không phải khi bạn di chuyển các đối tượng trong suốt khác lên trên biểu mẫu.
+0

Điều này cũng sẽ ẩn tất cả các yếu tố kiểm soát trên biểu mẫu. – Ahmad

1

Có một vài phương pháp bạn có thể sử dụng.

  • Sử dụng các hình thức TransparencyKey
  • Override OnPaintBackground (WM_ERASEBKGND)
  • Ghi đè WndProc và xử lý các thông điệp sơn (WM_NCPAINT, WM_PAINT, vv)

Tôi khuyên bạn nên trọng thủ tục cửa sổ để có được tối ưu các kết quả.

2

Đặt thuộc tính màu trong suốt của Biểu mẫu giống như thuộc tính Màu nền của biểu mẫu

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