2011-10-26 3 views
5

J'ai actuellement une application console. Comment dessiner des graphiques à l'écran sans avoir à avoir un formulaire.Comment dessiner des graphiques en C# sans formulaire

+1

Pourquoi ne pas simplement créer un formulaire et l'exécuter dans un thread secondaire? –

+0

Parce que ce que je fais ne nécessite aucun formulaire. –

+0

Une forme est juste une abstraction pour une fenêtre. Vous pouvez simplement ignorer le fait que c'est un formulaire et l'utiliser comme une fenêtre commune. Vous pouvez également utiliser Windows api CreateWindowEx en ignorant l'utilisation de Windows.Form dll, mais il vous faudra faire beaucoup de travail puisque vous n'avez aucune fonction GDI dans ce cas. –

Répondre

7

EDIT - basé sur le commentaire de CuddleBunny, j'ai créé une classe qui va essentiellement "dessiner des graphiques sur l'écran."

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

Espérons que cela aide.

ancienne réponse défectueuse


Vous pouvez obtenir le HWND d'une autre fenêtre et tirer parti de cela. Je ne suis pas sûr de savoir comment dessiner sur l'ensemble de l'écran, je me suis toujours demandé moi-même.

Un exemple simple:

  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

Vous devez créer une fenêtre d'une sorte de dessiner des graphiques à. Vous ne pouvez pas dessiner directement à l'écran.

+0

Je ne suis pas tout à fait sûr, mais cette application appelée puush ​​(qui vous permet de télécharger des captures d'écran) http://puush.me/ dessine un rectangle à l'écran pour vous de sélectionner la région de l'écran à capturer, et il semble pas besoin de fenêtre. Pas de publicité, mais je me suis toujours demandé comment ça se faisait. – Zhanger

+4

Je suis sûr qu'il utilise une "fenêtre" mais la fenêtre sur laquelle il dessine n'a aucun chrome. Vous pouvez recréer cet effet en créant une application Forms, en définissant le style de la fenêtre sur "none" et l'arrière-plan sur transparent. Après cela, les seules choses que l'utilisateur verra sont les objets que vous ajoutez au formulaire. Dans le cas de puush.me, je suis sûr qu'il crée une fenêtre en plein écran avec un fond transparent. – CuddleBunny

+0

CuddleBunny, c'est digne d'une réponse autonome (surtout si vous le jus avec un code de bare-bones). –

1

Vous pouvez dessiner sur l'intégralité de l'écran sans fenêtre en utilisant directx si vous créez une surface de dessin direct en plein écran. L'écran est tout à vous (pas de bureau Windows du tout).

Questions connexes