2011-10-26 4 views
5

私は現在コンソールアプリケーションを持っています。どのようにしてフォームを持たなくても、グラフィックを画面に描画できますか?フォームなしでC#でグラフィックスを描くにはどうすればいいですか?

+1

なぜフォームを作成してセカンダリスレッドで実行するだけではないのですか? –

+0

私は何もしていないので、フォームは必要ありません。 –

+0

フォームは、ウィンドウの単なる抽象です。それがフォームであるという事実をスキップして共通のウィンドウとして使用できます。また、Windows.Form dllの使用をスキップするWindows API CreateWindowExを使用することもできますが、その場合はGDI関数を持たないため、かなり多くの作業を行う必要があります。 –

答えて

7

EDIT - CuddleBunnyのコメントに基づいて、基本的には「画面上にグラフィックを描く」クラスを作成しました。

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

希望します。

古い障害のある答え


あなたは別のウィンドウのHWNDを取得し、その上に描画することができます。私は画面全体をどのように描画するかわからないが、私はいつも自分自身を疑問視してきた。

簡単な例:

  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

あなたはグラフィックスを描画するためにいくつかの種類のウィンドウを作成する必要があります。画面に直接描画することはできません。

+0

私は完全にはわかりませんが、このアプリケーションではpuush(スクリーンショットをアップロードできます)http://puush.me/は画面上の四角形を描き、キャプチャする画面の領域を選択します。窓は必要ありません。広告ではないが、私はいつもそれがどのようにしているのか疑問に思ってきた。 – Zhanger

+4

私はそれが "ウィンドウ"を使用していると確信していますが、描画するウィンドウにはクロムはありません。この効果は、フォームアプリケーションを作成し、ウィンドウのスタイルを「なし」に設定し、背景を透明に設定することで再現できます。その後、ユーザーに表示されるのは、フォームに追加するオブジェクトだけです。 puush.meの場合は、透明な背景のフルスクリーンウィンドウを作成すると確信しています。 – CuddleBunny

+0

CuddleBunny、それはスタンドアローンの答えに値する(特にあなたがいくつかの裸のコードでそれを搾り取るならば)。 –

1

フルスクリーンの直接描画面を作成すると、directxを使用してウィンドウなしで画面全体を描画できます。画面はすべてあなたのものです(Windowsデスクトップはまったくありません)。

関連する問題