2011-09-16 25 views
9

Tôi có Bảng điều khiển làm vùng chứa bảng này có ảnh trên nền làm việc, trong bảng điều khiển vùng chứa, tôi có một bảng điều khiển khác để đặt một số thông tin vào nhãn, thông tin đó sẽ thay đổi theo thời gian, những gì tôi muốn là chuyển đổi khi thông tin mới sắp hiển thị, làm mờ bảng thông tin với thông tin cũ và sau đó mờ dần trong cùng một bảng với thông tin mới. Tại thời điểm mờ dần bảng thông tin, tôi sẽ có thể xem hình ảnh backgroud của bảng điều khiển vùng chứa. Cả hai panel đều có BorderStyle = FixedSingle, còn bảng thông tin có màu backcolor.Làm thế nào để mờ dần trong/ra một bảng với nội dung bên trong bằng cách sử dụng C#

Bây giờ câu hỏi của tôi là: có cách nào để mờ dần trong/ngoài bảng thông tin và toàn bộ nội dung trong đó không?

Tôi đang tìm kiếm trên web và tôi tìm thấy cách tiếp cận với hiệu ứng này khi làm việc với backcolor của bảng nhưng nó không hoạt động, và bên cạnh đó, nội dung vẫn còn đó, vì chúng chỉ cố làm mờ thuộc tính backcolor :

Timer tm = new Timer(); 
    private void Form1_Shown(object sender, EventArgs e) 
    { 
     tm.Interval = 100; 
     tm.Tick += new EventHandler(timer1_Tick); 
     tm.Enabled = true; 
    } 

    private void timer1_Tick(object sender, EventArgs e) 
    { 
     int aa = 0; 
     panel2.BackColor = Color.FromArgb(aa, 255, 0, 0); 

     aa += 10; 
     if (aa > 255) 
      tm.Enabled = false; 
    } 

Mọi trợ giúp sẽ được đánh giá cao.

+0

Tôi không biết nhiều về WPF, nhưng nếu đó là một lựa chọn cho bạn, nó có thể được một lựa chọn tốt hơn để đạt được hiệu quả mà bạn đang tìm kiếm. http://en.wikipedia.org/wiki/Windows_Presentation_Foundation –

+0

Có, trong WPF bạn chỉ cần tạo một hình động làm thay đổi độ mờ của bảng theo thời gian. –

+1

Vấn đề bạn phải đối mặt là Opacity chỉ khả dụng ở cấp biểu mẫu chứ không phải ở cấp điều khiển. Có thể một thông minh hack nơi bạn tạo ra một hình ảnh giống hệt nhau trên một hình thức chồng lên bảng điều khiển của bạn và một khi opactiy là 100%, bạn ẩn các hình thức. Winforms là không tốt ở đây. – LarsTech

Trả lời

3

Tôi không tin rằng bạn có thể đặt độ mờ của các điều khiển riêng lẻ. Bản thân biểu mẫu có độ mờ đục, nhưng tôi không nghĩ bạn muốn làm mờ toàn bộ quyền kiểm soát.

Bạn có thể tạo điều khiển tùy chỉnh hỗ trợ opacity ... đây là một ví dụ: http://www.slimee.com/2009/02/net-transparent-forms-and-controls-with.html

tôi tin rằng thực hiện điều này sẽ áp dụng cho điều khiển con trong bảng điều khiển (vì nó đang làm việc trên diện tích hình chữ nhật mà sự kiểm soát mất lên). Nếu tôi sai, bạn phải xử lý tất cả các điều khiển của trẻ em như là một phần của hành vi quá mức.

Như những người khác đã nói, việc này trông 'mịn' có thể là rất nhiều công việc. Hy vọng rằng ai đó sẽ có một câu trả lời tốt hơn.

+0

Tôi đánh giá cao câu trả lời của bạn, tôi đồng ý với bạn, ý định của ứng dụng này là có một bảng điều khiển trong một TV lớn, nơi một số thông tin sẽ được hiển thị đúng lúc, đó là lý do tại sao tôi cần sử dụng một số hiệu ứng hình ảnh người xem có trải nghiệm tốt. Có lẽ tôi cần phải tìm một công cụ khác để làm điều này. – Somebody

2

Như được đề xuất trong các câu trả lời khác, bạn không thể (dễ dàng nếu không có kiểm soát của riêng bạn) mờ dần vào/ra một bảng điều khiển.

Bạn có thể làm mờ biểu mẫu vào hoặc ra khi khởi động HOẶC có một dạng hộp thoại phương thức mờ dần hoặc mờ dần.

Fade In

private void FadeIn_Tick(object sender, EventArgs e) 
    { 
     this.Opacity += .08; 
     if (this.Opacity >= 1) 
     { 
      FadeIn.Stop(); 
     } 
    } 

Fade Out

private void FadeOut_Tick(object sender, EventArgs e) 
    { 
     this.Opacity -= .08; //Decrease opacity 
     if (this.Opacity <= 0) //While it is not 0 
     { 
      FadeOut.Stop(); //Stop! 
      this.Close(); //Close the form 
     } 
    } 
+0

cảm ơn bạn đã trả lời MisdartedPenguin nhưng giải pháp của bạn chỉ áp dụng cho các biểu mẫu (như bạn đã nói). – Somebody

+0

Đây không phải là giải pháp cho câu hỏi này. Thậm chí không gần –

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