C#画图既可以使用 System.Drawing 命名空间的各种基础类。在某些情况下,也可以直接调用 Windows 的公共基础链接库 GDI32.DLL。

GDI32.DLL图形设备接口

意图

Microsoft Windows图形设备界面(GDI)使应用程序能够在视频显示器和打印机上使用图形和格式化文本。基于Windows的应用程序不直接访问图形硬件。相反,GDI代表应用程序与设备驱动程序交互。

适用

GDI可用于所有基于Windows的应用程序。

开发人员受众

此API是为C/C++程序员设计的。需要熟悉Windows消息驱动体系结构。

运行时要求

有关使用特定功能需要哪些操作系统的信息,请参阅该功能文档的“要求”部分。

在本节中

  1. 位图
  2. 画笔
  3. 剪裁
  4. 颜色
  5. 坐标空间和变换
  6. 设备上下文
  7. 填充形状
  8. 字体和文本
  9. 直线和曲线
  10. 图元文件
  11. 多个显示器
  12. 绘画和绘图
  13. 路径
  14. 钢笔
  15. 打印和打印后台处理程序
  16. 矩形
  17. 区域

using System;
using System.Runtime.InteropServices;[StructLayout(LayoutKind.Sequential)]
struct TEXTMETRIC
{public Int32 tmHeight;public Int32 tmAscent;public Int32 tmDescent;public Int32 tmInternalLeading;public Int32 tmExternalLeading;public Int32 tmAveCharWidth;public Int32 tmMaxCharWidth;public Int32 tmWeight;public Int32 tmOverhang;public Int32 tmDigitizedAspectX;public Int32 tmDigitizedAspectY;public Char tmFirstChar;public Char tmLastChar;public Char tmDefaultChar;public Char tmBreakChar;public Byte tmItalic;public Byte tmUnderlined;public Byte tmStruckOut;public Byte tmPitchAndFamily;public Byte tmCharSet;
}[StructLayout(LayoutKind.Sequential)]
struct RECT
{public Int32 left;public Int32 top;public Int32 right;public Int32 bottom;
}sealed class Gdi
{public const Int32 TRANSPARENT         = 1;public const Int32 FW_DONTCARE         = 0;public const Int32 FW_THIN             = 100;public const Int32 FW_EXTRALIGHT     = 200;public const Int32 FW_ULTRALIGHT     = 200;public const Int32 FW_LIGHT              = 300;public const Int32 FW_NORMAL         = 400;public const Int32 FW_REGULAR            = 400;public const Int32 FW_MEDIUM         = 500;public const Int32 FW_SEMIBOLD           = 600;public const Int32 FW_DEMIBOLD           = 600;public const Int32 FW_BOLD               = 700;public const Int32 FW_EXTRABOLD          = 800;public const Int32 FW_ULTRABOLD          = 800;public const Int32 FW_HEAVY              = 900;public const Int32 FW_BLACK              = 900;public const Int32 ANSI_CHARSET          = 0;public const Int32 DEFAULT_CHARSET     = 1;public const Int32 SYMBOL_CHARSET      = 2;public const Int32 OUT_DEFAULT_PRECIS  = 0;public const Int32 CLIP_DEFAULT_PRECIS = 0;public const Int32 DEFAULT_QUALITY     = 0;public const Int32 FF_DONTCARE         = (0<<4);public const Int32 R2_BLACK             = 1;public const Int32 R2_NOTMERGEPEN      = 2;public const Int32 R2_MASKNOTPEN       = 3;public const Int32 R2_NOTCOPYPEN       = 4;public const Int32 R2_MASKPENNOT       = 5;public const Int32 R2_NOT              = 6;public const Int32 R2_XORPEN           = 7;public const Int32 R2_NOTMASKPEN       = 8;public const Int32 R2_MASKPEN          = 9;public const Int32 R2_NOTXORPEN            = 10;public const Int32 R2_NOP             = 11;public const Int32 R2_MERGENOTPEN     = 12;public const Int32 R2_COPYPEN         = 13;public const Int32 R2_MERGEPENNOT     = 14;public const Int32 R2_MERGEPEN            = 15;public const Int32 R2_WHITE               = 16;public const Int32 R2_LAST                = 16;public const UInt32 SRCCOPY               = 0x00CC0020;public const UInt32 SRCPAINT          = 0x00EE0086;public const UInt32 SRCAND                = 0x008800C6;public const UInt32 SRCINVERT         = 0x00660046;public const UInt32 SRCERASE          = 0x00440328;public const UInt32 NOTSRCCOPY            = 0x00330008;public const UInt32 NOTSRCERASE           = 0x001100A6;public const UInt32 MERGECOPY         = 0x00C000CA;public const UInt32 MERGEPAINT            = 0x00BB0226;public const UInt32 PATCOPY               = 0x00F00021;public const UInt32 PATPAINT          = 0x00FB0A09;public const UInt32 PATINVERT         = 0x005A0049;public const UInt32 DSTINVERT         = 0x00550009;public const UInt32 BLACKNESS         = 0x00000042;public const UInt32 WHITENESS         = 0x00FF0062;public const Int32 WHITE_BRUSH            = 0;public const Int32 LTGRAY_BRUSH            = 1;public const Int32 GRAY_BRUSH          = 2;public const Int32 DKGRAY_BRUSH            = 3;public const Int32 BLACK_BRUSH         = 4;public const Int32 NULL_BRUSH          = 5;public const Int32 HOLLOW_BRUSH            = NULL_BRUSH;public const Int32 WHITE_PEN          = 6;public const Int32 BLACK_PEN           = 7;public const Int32 NULL_PEN                = 8;public const Int32 OEM_FIXED_FONT      = 10;public const Int32 ANSI_FIXED_FONT        = 11;public const Int32 ANSI_VAR_FONT      = 12;public const Int32 SYSTEM_FONT            = 13;public const Int32 DEVICE_DEFAULT_FONT    = 14;public const Int32 DEFAULT_PALETTE        = 15;public const Int32 SYSTEM_FIXED_FONT  = 16;public static UInt32 RGB(Byte r, Byte g, Byte b){UInt32 color = r;color |= (UInt32)((Int32)g << 8);color |= (UInt32)((Int32)b << 16);return color;}[DllImport("GDI32.DLL")]public static extern Boolean TextOut(IntPtr hdc, Int32 x, Int32 y, String text, Int32 count);[DllImport("GDI32.DLL")]public static extern Boolean GetCharWidth(IntPtr hdc, Int32 firstChar, Int32 lastChar, Int32[] widths);[DllImport("GDI32.DLL")]public static extern IntPtr SelectObject(IntPtr hdc, IntPtr obj);[DllImport("GDI32.DLL")]public static extern Int32 SetBkMode(IntPtr hdc, Int32 mode);[DllImport("GDI32.DLL")]public static extern Int32 SaveDC(IntPtr hdc);[DllImport("GDI32.DLL")]public static extern Int32 RestoreDC(IntPtr hdc, Int32 savedDC);[DllImport("GDI32.DLL")]public static extern IntPtr CreateFont(Int32 height, Int32 width, Int32 escapement, Int32 orientation, Int32 weight, UInt32 italic, UInt32 underline, UInt32 strikeout, UInt32 charset, UInt32 outputPrecision, UInt32 clipPrecision, UInt32 quality, UInt32 pitchAndFamily, String face);[DllImport("GDI32.DLL")]public static extern Boolean DeleteObject(IntPtr obj);[DllImport("GDI32.DLL")]public static extern Boolean GetTextMetrics(IntPtr hdc, ref TEXTMETRIC tm);[DllImport("GDI32.DLL")]public static extern IntPtr CreateCompatibleDC(IntPtr hdc);[DllImport("GDI32.DLL")]public static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, Int32 width, Int32 height);[DllImport("GDI32.DLL")]public static extern Boolean DeleteDC(IntPtr hdc);[DllImport("GDI32.DLL")]public static extern Boolean BitBlt(IntPtr hdcDest, Int32 xDest, Int32 yDest, Int32 width, Int32 height, IntPtr hdSrc, Int32 xSrc, Int32 ySrc, UInt32 rop);[DllImport("GDI32.DLL")]public static extern Int32 FillRect(IntPtr hdc, ref RECT rc, IntPtr hbr);[DllImport("GDI32.DLL")]public static extern IntPtr GetStockObject(Int32 obj);[DllImport("GDI32.DLL")]public static extern Boolean Rectangle(IntPtr hdc, Int32 left, Int32 top, Int32 right, Int32 bottom);[DllImport("GDI32.DLL")]public static extern Int32 SetROP2(IntPtr hdc, Int32 drawMode);[DllImport("GDI32.DLL")]public static extern Int32 GetROP2(IntPtr hdc);[DllImport("GDI32.DLL")]public static extern Boolean LineTo(IntPtr hdc, Int32 xEnd, Int32 yEnd);[DllImport("GDI32.DLL")]public static extern Boolean MoveToEx(IntPtr hdc, Int32 x, Int32 y, ref System.Drawing.Point oldPos);[DllImport("GDI32.DLL")]public static extern Boolean PatBlt(IntPtr hdc, Int32 x, Int32 y, Int32 width, Int32 height, UInt32 rop);[DllImport("GDI32.DLL")]public static extern UInt32 SetPixel(IntPtr hdc, Int32 x, Int32 y, UInt32 color);[DllImport("GDI32.DLL")]public static extern Boolean Ellipse(IntPtr hdc, Int32 left, Int32 top, Int32 right, Int32 bottom);
}

C#,调用GDI32.DLL绘制图形的源程序相关推荐

  1. 这么详细的Python matplotlib 绘制图形 还不赶紧收藏

    前言 我们前面对matplotlib模块底层结构学习,对其pyplot类(脚本层)类提供的绘制折线图.柱状图.饼图.直方图等统计图表的相关方法,列举往期文章如下. 超详细的Python matplot ...

  2. 绘制图形可以使用什么python数据库_python 读取数据库并绘图的实例

    python 读取数据库并绘图的实例 1.安装相应的库文件 sudo apt-get install python-mysqldb 2.数据库操作 import MySQLdb db = MySQLd ...

  3. c#调用外部dll详解

     一.      DLL与应用程序 动态链接库(也称为DLL,即为"Dynamic Link Library"的缩写)是Microsoft Windows最重要的组成要素之一, ...

  4. C# 调用 Delphi Dll链接库方法及示例

    每种编程语言调用DLL的方法都不尽相同,在此只对用C#调用Delphi DLL的方法进行介绍 首先要搞清楚一点的是:什么是托管,什么是非托管? 一般可以认为:非托管代码主要是基于win 32平台开发的 ...

  5. OpenCV_02 图像的基本操作:图像IO+绘制图形+像素点+属性+图像通道+色彩空间的改变

    1 图像的IO操作 这里我们会给大家介绍如何读取图像,如何显示图像和如何保存图像. 1.1 读取图像 API cv.imread() 参数: 要读取的图像 读取方式的标志 cv.IMREAD*COLO ...

  6. qt中实现绘制图形与截图

    引言 实现可以选择线型,线宽,颜色,是否填充图形来绘制各种常见的图形,同时可以选择矩形区域来实现截图. 效果 绘图的效果如上,截图的效果: 实现 项目使用的qt5.13.2,编译器为MSVC2017_ ...

  7. html5中Canvas、绘制线条模糊、常见绘制工具、绘制基本图形、绘制图片、面向对象的方式绘制图形图片、绘制文本、帧动画绘制

    Canvas容器: canvas标签用来定义图像的容器,必须配合脚本来绘制图像,canvas也运用于游戏开发.注意:canvas绘制图时会出现线条模糊情况,这是因为显示屏像素和canvas中定义的一个 ...

  8. esri-leaflet入门教程(5)- 动态绘制图形

    esri-leaflet入门教程(5)- 动态绘制图形 by 李远祥 在上一章节中已经说明了esr-leaflet是如何加载ArcGIS Server提供的各种服务,这些都是服务本身来决定的,API脚 ...

  9. ios Quartz 各种绘制图形用法

    摘要: CoreGraphics的功能非常强大,可以绘制各种图形:今天学习一下怎么绘制简单的点线面,记录学习. 一.导入coreGraphics.framework 二.绘制图形 1.绘制矩形 // ...

  10. CAD如何创建图层并绘制图形

    1.   点击[快速访问]工具栏中的[新建]按钮,新建空白文件. 2.   在命令行中输入LA,调用[图层特性管理器]命令,系统会自动弹出[图层特性管理器]对话框. 3.   点击[新建图层]按钮,新 ...

最新文章

  1. Linux系统下,虚拟终端开启256色_虚拟终端类型xterm开启256色
  2. 前端学习(3100):vue+element今日头条管理-react简介
  3. 冠榕智能灯光控制协议分析(controller-node) 2
  4. UpdatePanel 的 UpdateMode 和 ChildrenAsTriggers(较好的总结了前面几篇博客的内容)
  5. hdu 2476 区间dp
  6. efcore调用函数_EF Core 3.1 执行sql语句的几种方法
  7. 传输层端口号的范围是多少?被分为哪两部分_根据资金习性可以把资金分为哪几类?_中级会计职称考试视频...
  8. linux基本命令与终端操作、linux命令英文全称解释、ls clear cd pwd cat touch cp rm rmdir mkdir mv file find grep sudo su
  9. 运维日常操作--linux命令
  10. Atitit 订单处理原理与功能设计attilax总结
  11. hex2bin和bin2hex互转的小程序源代码
  12. 2022CCPC网络预选赛c题Problem C. Guess
  13. cocos2dx 特效 3D特效
  14. vue前端生成词云图的方法
  15. pip使用豆瓣的镜像源
  16. 【Linux】将用户添加到root组中
  17. python一些运维模块熟悉
  18. 黑马程序员_程序代码实现进制转换
  19. 网页采集器-八爪鱼采集器
  20. 3.Python-复杂数据类型之列表、元组

热门文章

  1. 由于找不到 MSVCR120.dll,无法继续执行代码终极解决方法
  2. 加州大学戴维斯分校 计算机科学,美国王牌专业!加州大学戴维斯分校计算机科学专业等你来...
  3. idea创建的maven web工程如何修改web版本
  4. 什么是443端口?HTTPS是什么端口?如何工作
  5. [Matlab] subs 函数 将符号变量代入符号表达式不需要加引号
  6. linux运行搜狗拼音,搜狗输入法 for Linux版的安装图文教程
  7. win10 桌面右键菜单内容修改
  8. 当我们在聊高可用时,我们其实在聊什么?
  9. oracle11g 网页账号,oracle11g 创建用户并受权
  10. C语言输入10名同学3门课,输入10个学生3门课的成绩,统计各科全部及格的人数(c语音)...