2010-03-11 255 views
0

有人可以提供一個不使用Windows窗體繪製圖形的例子嗎?我有一個沒有控制檯窗口或Windows窗體的應用程序,但我需要繪製一些基本圖形(線條和矩形等)。在不使用Windows窗體的情況下繪製C#圖形

希望有道理。

+0

如果你需要畫一些圖形?在一個文件? – 2010-03-11 13:03:18

+0

告訴我們你的應用程序可以繪製圖形。 – 2010-03-11 13:06:04

+0

我做一個鼠標手勢的應用程序,所以我想繪製到屏幕上沒有一個可見的窗口。 – 2010-03-11 13:07:07

回答

-1

正確的,我已經做到了與Windows表單的方式,但使背景透明,然後幹掉所有的邊界.. 。

感謝反正回信..

Ĵ

2

這樣的事情?

using System.Drawing; 

Bitmap bmp = new Bitmap(200, 100); 
Graphics g = Graphics.FromImage(bmp); 
g.DrawLine(Pens.Black, 10, 10, 180, 80); 
1

這個問題有點不專心。具體來說 - 你想在哪裏繪製線條和矩形?一般來說,您需要一個繪圖表面,通常由窗體提供。

哪裏需要避開窗體來自哪裏?

您是否在使用另一種窗口?

Windows窗體你可以使用類似的代碼如下:

namespace WindowsFormsApplication1 { 
    public partial class Form1 : Form { 
     public Form1() { 
      InitializeComponent(); 
     } 

     protected override void OnPaint(PaintEventArgs e) { 
      base.OnPaint(e); 

      e.Graphics.DrawLine(new Pen(Color.DarkGreen), 1,1, 3, 20); 
      e.Graphics.DrawRectangle(new Pen(Color.Black), 10, 10, 20, 32); 
     } 
    } 
} 

通常你可以做到這一點用,可以讓你得到一個處理一個「圖形」對象(如打印機)的任何對象。

5

這應該給你一個良好的開端:

[TestFixture] 
    public class DesktopDrawingTests { 
    private const int DCX_WINDOW = 0x00000001; 
    private const int DCX_CACHE = 0x00000002; 
    private const int DCX_LOCKWINDOWUPDATE = 0x00000400; 

    [DllImport("user32.dll")] 
    private static extern IntPtr GetDesktopWindow(); 

    [DllImport("user32.dll")] 
    private static extern IntPtr GetDCEx(IntPtr hwnd, IntPtr hrgn, uint flags); 

    [Test] 
    public void TestDrawingOnDesktop() { 
     IntPtr hdc = GetDCEx(GetDesktopWindow(), 
          IntPtr.Zero, 
          DCX_WINDOW | DCX_CACHE | DCX_LOCKWINDOWUPDATE); 

     using (Graphics g = Graphics.FromHdc(hdc)) { 
     g.FillEllipse(Brushes.Red, 0, 0, 400, 400); 
     } 
    } 
    } 
+1

這將是一個閃爍的地獄 – 2010-04-29 09:37:41

相關問題