2011-10-26 37 views
5

Tôi hiện đang có ứng dụng Bảng điều khiển. Làm cách nào tôi vẽ đồ họa lên màn hình mà không cần phải có biểu mẫu.Làm cách nào để vẽ đồ họa trong C# mà không có biểu mẫu

+1

Tại sao bạn không chỉ tạo biểu mẫu và chạy biểu mẫu trong chuỗi phụ? –

+0

Bởi vì những gì tôi đang làm không cần phải có biểu mẫu. –

+0

Biểu mẫu chỉ là một trừu tượng cho một cửa sổ. Bạn chỉ có thể bỏ qua thực tế rằng nó là một hình thức và sử dụng nó như là một cửa sổ chung. Bạn cũng có thể sử dụng windows api CreateWindowEx bỏ qua việc sử dụng Windows.Form dll, nhưng nó sẽ yêu cầu bạn phải làm khá nhiều công việc vì bạn không có bất kỳ chức năng GDI nào trong trường hợp đó. –

Trả lời

7

EDIT - dựa trên nhận xét của CuddleBunny, tôi đã tạo một lớp về cơ bản sẽ "vẽ đồ họa trên màn hình".

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Drawing; 
using System.Windows.Forms; 
namespace WindowsFormsApplication4 
{ 
    class test : Form 
    { 
     public test() : base() 
     { 
      this.TopMost = true; 
      this.DoubleBuffered = true; 
      this.ShowInTaskbar = false; 
      this.FormBorderStyle = FormBorderStyle.None; 
      this.WindowState = FormWindowState.Maximized; 
      this.BackColor = Color.Purple; 
      this.TransparencyKey = Color.Purple; 
     } 
     protected override void OnPaint(PaintEventArgs e) 
     { 
      e.Graphics.DrawRectangle(Pens.Black, 0, 0, 200, 200); 
      this.Invalidate(); //cause repaint 
     } 
     public static void Main(String[] args) 
     { 
      Application.Run(new test()); 
     } 
    } 
} 

Hy vọng điều đó sẽ hữu ích.

câu trả lời bị lỗi cũ


Bạn có thể lấy hwnd của một cửa sổ khác và vẽ trên đó. Tôi không chắc chắn làm thế nào để vẽ trên toàn bộ màn hình mặc dù, tôi đã luôn luôn tự hỏi rằng bản thân mình.

Một ví dụ đơn giản:

  Process p = Process.GetProcessById(0); //id of the process or some other method that can get the desired process 
     using (Graphics g = Graphics.FromHwnd(p.MainWindowHandle)) 
     { 
      g.DrawRectangle(Pens.Black, 0, 0, 100, 100); 
     } 
2

Bạn cần phải tạo ra một cửa sổ của một số loại để vẽ đồ họa để. Bạn không thể chỉ vẽ trực tiếp lên màn hình.

+0

Tôi không hoàn toàn chắc chắn, nhưng ứng dụng này được gọi là puush ​​(cho phép bạn tải lên ảnh chụp màn hình) http://puush.me/ vẽ một hình chữ nhật trên màn hình để bạn chọn khu vực của màn hình để chụp, và nó xuất hiện không cần bất kỳ cửa sổ nào. Không quảng cáo, nhưng tôi đã luôn tự hỏi nó như thế nào. – Zhanger

+4

Tôi chắc chắn rằng nó sử dụng "cửa sổ" nhưng cửa sổ mà nó đang vẽ để không có bất kỳ chrome nào. Bạn có thể tạo lại hiệu ứng này bằng cách tạo một ứng dụng biểu mẫu, thiết lập kiểu cửa sổ thành "none" và nền thành trong suốt. Sau đó, những điều duy nhất người dùng sẽ thấy là các đối tượng bạn thêm vào biểu mẫu. Trong trường hợp của puush.me, tôi chắc chắn nó tạo ra một cửa sổ toàn màn hình với nền trong suốt. – CuddleBunny

+0

CuddleBunny, đó là xứng đáng với một câu trả lời độc lập (đặc biệt là nếu bạn ép nó lên với một số mã xương trần). –

1

Bạn có thể vẽ trên toàn bộ màn hình mà không cần cửa sổ sử dụng directx nếu bạn tạo trực tiếp toàn màn hình. Màn hình là tất cả của bạn (không có cửa sổ máy tính để bàn ở tất cả).

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