2011-10-26 16 views
5

Aktualnie mam aplikację konsoli. Jak mogę narysować grafikę na ekranie bez konieczności posiadania formularza.Jak rysować grafiki w języku C# bez formularza

+1

Dlaczego po prostu nie tworzysz formularza i nie uruchamiasz go w wątku dodatkowym? –

+0

Ponieważ to, co robię, nie wymaga żadnych formularzy. –

+0

Formularz jest po prostu abstrakcją dla okna. Możesz po prostu pominąć fakt, że jest to formularz i używać go jako wspólnego okna. Możesz także użyć windows api CreateWindowEx pomijając użycie Windows .Form dll, ale będzie to wymagało dużego nakładu pracy, ponieważ nie masz w tym przypadku żadnej funkcji GDI. –

Odpowiedz

7

EDYCJA - na podstawie komentarza CuddleBunny stworzyłem klasę, która zasadniczo "rysuje grafikę na ekranie".

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

Mam nadzieję, że to pomaga.

stary uszkodzony odpowiedź


można uzyskać HWND innego okna i zwrócić na to. Nie jestem pewien, jak narysować cały ekran, zawsze się nad tym zastanawiałem.

Prosty przykład:

  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

Musisz utworzyć okno jakiegoś zwrócić do grafiki. Nie możesz po prostu narysować bezpośrednio na ekranie.

+0

Nie jestem do końca pewien, ale ta aplikacja nazywa się puush ​​(która pozwala przesyłać zrzuty ekranu) http://puush.me/ rysuje prostokąt na ekranie, aby wybrać region ekranu do przechwytywania i wydaje się, że nie potrzebuje żadnego okna. Bez reklam, ale zawsze zastanawiałem się, jak to się robi. – Zhanger

+4

Jestem pewien, że używa "okna", ale okno, do którego rysuje, nie ma żadnego chromu. Możesz odtworzyć ten efekt, tworząc aplikację formularzy, ustawiając styl okna na "none", a tło na przezroczyste. Następnie użytkownik zobaczy obiekty dodane do formularza. W przypadku puush.me, jestem pewien, że tworzy to okno pełnoekranowe z przezroczystym tłem. – CuddleBunny

+0

CuddleBunny, to zasługuje na samodzielną odpowiedź (zwłaszcza jeśli soczysz to z kodem nagich kości). –

1

Możesz rysować na całym ekranie bez okna używając directx, jeśli utworzysz pełny ekran DirectDruk. Ekran jest cały twój (w ogóle nie ma pulpitu Windows).