.NET中使用API绘图 using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Runtime.InteropServices; namespace API ... { /**//// <summary> /// Form1 的摘要说明。 /// </summary> public class Form1 : System.Windows.Forms.Form ...{ /**//// <summary> /// 必需的设计器变量。 /// </summary> private System.ComponentModel.Container components = null; public Form1() ...{ // // Windows 窗体设计器支持所必需的 // InitializeComponent(); // // TODO: 在 InitializeComponent 调用后添加任何构造函数代码 // } /**//// <summary> /// 清理所有正在使用的资源。 /// </summary> protected override void Dispose( bool disposing ) ...{ if( disposing ) ...{ if (components != null) ...{ components.Dispose(); } } base.Dispose( disposing ); } Windows Form Designer generated code#region Windows Form Designer generated code /**//// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void InitializeComponent() ...{ this.components = new System.ComponentModel.Container(); this.Size = new System.Drawing.Size(300,300); this.Text = "Form1"; } #endregion /**//// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() ...{ Application.Run(new Form1()); } [StructLayout(LayoutKind.Sequential)] public struct LPPOINT ...{ public long x; public long y; } [DllImport("gdi32.dll")] private static extern bool SetROP2(IntPtr hdc,int nDrawMode); [DllImport("gdi32.dll")] private static extern bool Rectangle (IntPtr hdc,int X1, int Y1,int X2, int Y2); [DllImport("gdi32.dll")] private static extern long CreatePen(int nPenStyle, int nWidth, long crColor); [DllImport("gdi32.dll")] private static extern long SelectObject(IntPtr hdc, long hObject); [DllImport("gdi32.dll")] private static extern long DeleteObject(long hObject); //绘矩形 public void Draw(Graphics g, long aColor) ...{ IntPtr hdc; hdc =g.GetHdc(); SetROP2(hdc, 10); long p,oldP; p = CreatePen(0, 1, aColor); oldP = SelectObject(hdc, p); Rectangle(hdc, 20, 150, 170, 250); SelectObject(hdc, oldP); DeleteObject(p); g.ReleaseHdc(hdc); } protected override void OnPaint(PaintEventArgs e) ...{ Graphics g = e.Graphics; g.FillRectangle(Brushes.White, this.ClientRectangle); //用GDI+函数绘一个兰色矩形 g.DrawRectangle(Pens.Blue, 20, 20, 150, 100); //用API函数绘一个红色矩形 Draw(g,255); } }}