当前位置: 首页 > news >正文

C#中的GDI和GDI+(Graphics Device Interface Plus)图形设备接口

GDI的概念

GDI(Graphics Device Interface)是微软Windows操作系统中的一个组件,它提供了一组API,用于在显示器或打印机等图形设备上进行图形绘制和图像处理。GDI 是 Windows 编程中用于二维图形和图像处理的接口

GDI 的主要功能包括:

  1. 绘制基本图形:如线条、矩形、椭圆、多边形等。
  2. 文本输出:在屏幕上或打印机上输出文本。
  3. 图像处理:加载、显示和操作位图图像。
  4. 设备无关性:GDI 允许程序员编写设备无关的代码,这意味着同一段代码可以在不同的输出设备上运行,如不同的显示器或打印机。
  5. 坐标转换:GDI 允许程序员定义自己的坐标系统,并在必要时自动转换到设备坐标系统。
  6. 颜色管理:GDI 提供了颜色管理功能,包括调色板的使用和颜色空间的转换。

GDI+的概念 

GDI+ 是 Graphics Device Interface Plus 的缩写,它是微软公司提供的一种图形设备接口,用于在 Windows 应用程序中进行二维图形和成像处理。GDI+ 是 GDI(Graphics Device Interface)的继承者,它提供了更为丰富和强大的图形绘制功能。

在 C# 中,GDI+ 功能通过 System.Drawing 命名空间中的类和方法来实现。这些功能包括:

  1. 绘图和形状:使用 Graphics 类来绘制线条、曲线、矩形、椭圆、多边形等基本图形。

  2. 图像处理:支持位图(Bitmap)、图标(Icon)和其他图像格式的加载、保存、缩放和转换。

  3. 文本渲染:提供文本绘制功能,包括字体、大小、样式和对齐方式的设置。

  4. 高级图形:支持路径(Path)、区域(Region)、矩阵变换(Matrix)和坐标变换等高级图形功能。

  5. 图像效果:可以实现图像的平滑缩放、旋转、倾斜和颜色调整等效果。

  6. 打印支持:提供打印相关的功能,包括打印预览和打印作业的管理。

 例句

using System.Drawing;public void DrawSimpleShape(Graphics graphics)
{// 绘制一个蓝色的矩形using (SolidBrush blueBrush = new SolidBrush(Color.Blue)){graphics.FillRectangle(blueBrush, 0, 0, 100, 100);}// 绘制一个红色的椭圆using (SolidBrush redBrush = new SolidBrush(Color.Red)){graphics.FillEllipse(redBrush, 110, 0, 100, 100);}// 绘制一个绿色的线using (Pen greenPen = new Pen(Color.Green)){graphics.DrawLine(greenPen, 0, 110, 200, 110);}
}

Graphics 对象提供了绘制图形的方法。SolidBrush 用于填充颜色,Pen 用于绘制线条和轮廓。 

GDI+ 常用类

  1. Graphics:表示一个图形上下文,用于绘制线条、形状和图像。

  2. Pen:表示一支笔,用于绘制线条、曲线和图形轮廓。

  3. SolidBrush:表示一个实体画刷,用于填充图形的内部区域。

  4. TextureBrush:表示一个纹理画刷,用于使用图像或纹理填充图形的内部区域。

  5. LinearGradientBrush:表示一个线性渐变画刷,用于创建线性渐变效果。

  6. PathGradientBrush:表示一个路径渐变画刷,用于创建基于路径的渐变效果。

  7. Image:表示图像,可以是位图(Bitmap)、图标(Icon)或元文件(Metafile)。

  8. Bitmap:表示位图图像,用于处理像素数据。

  9. Icon:表示图标图像。

  10. Font:表示文本的字体和样式。

  11. FontFamily:表示字体系列,用于创建特定字体样式的文本。

  12. SizeF:表示浮点数大小,通常用于表示图像或控件的尺寸。

  13. PointF:表示浮点数坐标,用于指定位置。

  14. RectangleF:表示浮点数矩形,用于定义区域。

  15. Color:表示颜色。

  16. Matrix:表示变换矩阵,用于执行图形的平移、缩放、旋转和倾斜。

  17. Region:表示一个或多个矩形区域的组合,用于裁剪和区域填充。

  18. GraphicsPath:表示一系列线条和曲线的路径,用于创建复杂的形状。

  19. Drawing2D:包含一组静态方法和属性,用于创建和操作高级二维图形。

  20. TextRenderer:提供了一个用于在 Windows Forms 应用程序中以更高性能和更一致的外观绘制文本的方法。

GDI和DGDI+的区别

  1. 功能和性能

    • GDI:是较早的图形接口,提供了基本的图形绘制功能,如绘制线条、形状、文本和图像处理。GDI 主要用于传统的 Windows 应用程序。
    • GDI+:是 GDI 的扩展和增强版本,提供了更丰富的图形功能,包括更复杂的图形处理、图像处理、高级文本渲染、透明效果、图形变换等。GDI+ 支持更广泛的图形操作,并且性能更好。
  2. API 设计

    • GDI:使用 Win32 API,需要直接与设备驱动程序交互,API 较为底层。
    • GDI+:提供了一个更高级、更易于使用的 API,封装了底层的 Win32 GDI 调用,使得开发者可以更专注于图形逻辑而不是底层细节。
  3. 硬件加速

    • GDI:在早期版本中,硬件加速支持有限。
    • GDI+:更好地支持硬件加速,可以利用现代图形硬件的性能。
  4. 图像格式支持

    • GDI:支持的图像格式较少。
    • GDI+:支持更多的图像格式,包括 JPEG、PNG、GIF 等。
  5. 透明和反锯齿

    • GDI:不支持透明和反锯齿。
    • GDI+:支持透明度和反锯齿,可以创建更平滑、更现代的图形效果。
  6. 资源管理

    • GDI:资源管理较为复杂,需要手动管理 GDI 对象,如笔(Pen)、刷子(Brush)和位图(Bitmap)。
    • GDI+:简化了资源管理,使用 .NET 的垃圾回收机制自动管理资源。
  7. 使用范围

    • GDI:主要用于旧的 Windows 应用程序,如使用 Win32 API 开发的应用程序。
    • GDI+:是 .NET Framework 的一部分,广泛用于 Windows Forms 应用程序和其他 .NET 应用程序中。
  8. 开发语言

    • GDI:通常与 C 或 C++ 等语言一起使用。
    • GDI+:与 .NET 语言(如 C#、VB.NET)一起使用,提供了更简洁的语法和更好的集成。

在开发新的 Windows 应用程序时,通常推荐使用 GDI+。 

相关文章:

C#中的GDI和GDI+(Graphics Device Interface Plus)图形设备接口

GDI的概念 GDI(Graphics Device Interface)是微软Windows操作系统中的一个组件,它提供了一组API,用于在显示器或打印机等图形设备上进行图形绘制和图像处理。GDI 是 Windows 编程中用于二维图形和图像处理的接口。 GDI 的主要功…...

谷粒商城のNginx

文章目录 前言一、Nginx1、安装Nginx2、相关配置2.1、配置host2.2、配置Nginx2.3、配置网关 前言 本篇重点介绍项目中的Nginx配置。 一、Nginx 1、安装Nginx 首先需要在本地虚拟机执行: mkdir -p /mydata/nginx/html /mydata/nginx/logs /mydata/nginx/conf在项目…...

Debug-027-el-tooltip组件的使用及注意事项

前言: 这两天,碰到这个饿了么的el-tooltip比较多。这个组件使用起来也挺简单的,常用于展示鼠标 hover 时的提示信息。但是有一些小点需要注意。这里不再机械化的介绍文档,不熟悉的话可以先看一下: https://element-pl…...

猫眼电影字体破解(图片转码方法)

问题 随便拿一篇电影做样例。我们发现猫眼的页面数据在预览窗口中全是小方框。在当我们拿到源码以后,数据全是加密后的。所以我们需要想办法破解加密,拿到数据。 破解过程 1.源码获取问题与破解 分析 在我们刚刚请求url的时候是可以得到数据的&#xff…...

flink wordcount

Maven配置pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…...

组合模式(Composite Pattern)

使用组合模式&#xff08;Composite Pattern&#xff09;是一个更优雅的方式来表示菜单和菜单项。组合模式允许我们将单个对象&#xff08;如菜单项&#xff09;和组合对象&#xff08;如菜单&#xff09;以相同的方式处理。 解决方案&#xff1a; 创建组合结构&#xff1a;我…...

教你制作一本加密的样本册

在这个信息的时代&#xff0c;保护自己的隐私和知识产权变得尤为重要。你有没有想过&#xff0c;如何将自己珍贵的样本资料变成一本只有自己才能查看的加密宝典&#xff1f;今天&#xff0c;我就来教你制作一本加密的样本册 第一步&#xff0c;打开浏览器&#xff0c;搜索FLBOO…...

C语言进阶【1】--字符函数和字符串函数【1】

本章概述 字符分类函数字符转换函数strlen的使用和模拟实现strcpy的使用和模拟实现strcat的使用和模拟实现strcmp的使用和模拟实现彩蛋时刻&#xff01;&#xff01;&#xff01; 字符分类函数 字符&#xff1a; 这个概念&#xff0c;我们在以前的文章中讲过了。我们键盘输入的…...

git提交自动带上 Signed-off-by信息

为了确保在使用 Signed-off-by 签名的同时保留你的提交消息&#xff0c;你需要修改 prepare-commit-msg 钩子脚本&#xff0c;以便它不会丢失原始的提交信息。 增加prepare-commit-msg 钩子以保留提交消息 prepare-commit-msg 钩子的目的是在提交信息文件中插入额外的内容&am…...

图论(2)

一、度 度统计的是一个节点上又多少条边 度出度入度 出度&#xff1a;统计以该节点为起始点箭头指向外面的边的条数 入度&#xff1a;统计箭头指向该节点的边数 度为1的节点为悬挂节点&#xff0c;边为悬挂边 用矩阵计算节点的度 二、握手定理 比如这里第一个集合里面有三…...

ASP.NET Core 入门教学十九 依赖注入ioc

ASP.NET Core内置了对依赖注入&#xff08;Dependency Injection&#xff0c;简称DI&#xff09;的支持&#xff0c;这是一种设计模式&#xff0c;用于实现控制反转&#xff08;Inversion of Control&#xff0c;简称IoC&#xff09;&#xff0c;从而使得应用程序组件之间的耦合…...

omm kill 内存碎片化

内存频繁 OOM(Out of Memory)会导致内存碎片化,并进一步加剧无可用内存分配的问题。碎片化是内存管理中常见的问题,当系统频繁分配和释放内存时,内存空间会被分割成许多小块,虽然内存总量可能足够,但这些小块无法满足较大进程或数据的内存需求,最终导致系统无法找到足够…...

JS中给元素添加事件监听器的各种方法详解(包含比较和应用场景)

JavaScript 中给元素添加事件监听器的各种方法详解 在 JavaScript 中&#xff0c;事件处理是前端开发的一个重要部分。无论是点击按钮、提交表单&#xff0c;还是鼠标悬停&#xff0c;都涉及到事件监听。本文中&#xff0c;我将详细讲解各种给元素添加事件监听器的方法&#x…...

Python基本数据类型之复数complex

来源&#xff1a; “码农不会写诗”公众号 链接&#xff1a;Python基本数据类型之复数complex 文章目录 01 基本概念02 基本运算03 拓展1复数与向量 复数complex Python基本数据之复数(complex)即包含实部和虚部的数字。 01 基本概念 即包含实部和虚部的数字。 在Python中&am…...

第六届机器人与智能制造技术国际会议 (ISRIMT 2024)

目录 会议详情 主题 会议官网 会议详情 第六届机器人与智能制造技术国际研讨会&#xff08;ISRIMT 2024&#xff09;计划于2024年9月20-22日在常州举行。会议主要聚焦“机器人”和“智能制造技术”的研究领域&#xff0c;旨在为机器人和智能制造技术领域的专家学者、工程技术…...

鸿蒙轻内核M核源码分析系列十九 Musl LibC

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 轻内核M核源码分析系列一 数据结构-双向循环链表 轻内核M核源码分析系列二 数据结构-任务就绪队列 鸿蒙轻内核M核源码分析系列三 数据结构-任务排序链表 轻…...

mysqldump备份恢复数据库

mysqldump程序可以用来备份和恢复数据库 ,默认情况mysqldump会创建drop table, create table,和insert into的sql语句. 语法 > mysqldump [options] db_name [tbl_name ...] > mysqldump [options] --databases db_name ... > mysqldump [options] --all-databases备…...

路径规划——RRT算法

路径规划——RRT算法 算法原理 RRT算法的全称是快速扩展随机树算法(Rapidly Exploring Random Tree)&#xff0c;它的思想是选取一个初始点作为根节点&#xff0c;通过随机采样&#xff0c;增加叶子节点的方式&#xff0c;生成一个随机扩展树&#xff0c;当随机树中的叶子节点…...

OPCUA-PLC

下载opcua服务器(有PLC可以直连),UaAnsiCServer下载路径 双击运行如下,Endpoint显示opcua服务路径 opc.tcp://DESKTOP-9SD7K4B:48020 下载opcua客户端(类似编写代码连接操作),UaExpert下载路径 如果连接失败,有一个授权认证,点击同意就行 java代码实现连接opcUA操作 pom.…...

在Windows系统上部署PPTist并实现远程访问

在Windows系统上部署PPTist并实现远程访问 前言PPTist简介本地部署PPTist步骤1&#xff1a;获取PPTist步骤2&#xff1a;安装依赖步骤3&#xff1a;运行PPTist 使用PPTist远程访问PPTist步骤1&#xff1a;安装Cpolar步骤2&#xff1a;配置公网地址步骤3&#xff1a;配置固定公网…...

CSS伪类详解:从基础到高级应用

CSS伪类详解&#xff1a;从基础到高级应用 一、什么是CSS伪类 CSS伪类是一种选择器&#xff0c;用于选择处于特定状态的元素。它们以冒号 : 开头&#xff0c;可以为元素的不同状态设置不同的样式。伪类的强大之处在于它们能够根据用户交互、文档结构或元素状态来动态改变样式&a…...

AI 时代产品经理生存与进化指南

AI 时代产品经理生存与进化指南 三重知识体系的交汇&#xff1a;NPDP产品开发 PMP项目管理 AI原生方法论 本文档整合了 NPDP&#xff08;新产品开发专业人士认证&#xff09;、PMP&#xff08;项目管理专业人士认证&#xff09;与 Anthropic 产品负责人 Catherine Wu&#xf…...

如何用NightX Client打造终极Minecraft 1.8.9体验?完整功能解析+新手教程 [特殊字符]

如何用NightX Client打造终极Minecraft 1.8.9体验&#xff1f;完整功能解析新手教程 &#x1f680; 【免费下载链接】NightX-Client Minecraft Forge 1.8.9 hacked client, Based on LiquidBounce 项目地址: https://gitcode.com/gh_mirrors/ni/NightX-Client NightX Cl…...

miniblink49浏览器内核:企业级打印与PDF生成技术架构深度解析

miniblink49浏览器内核&#xff1a;企业级打印与PDF生成技术架构深度解析 【免费下载链接】miniblink49 a lighter, faster browser kernel of blink to integrate HTML UI in your app. 一个小巧、轻量的浏览器内核&#xff0c;用来取代wke和libcef 项目地址: https://gitco…...

自动化图表:用 AI 指令将测试执行结果秒变炫酷的 Excel 漏斗图/折线图

友情提示:文末有「选型对照表 + 安全自查清单」,如果你正在选 AI 出图方案,可以直接跳到文末。 一、从一张测试报告说起 如果你是测试工程师或项目管理者,下面这个场景你一定不陌生: 每周五下午,你需要把本周的测试执行结果整理成图表——通过率趋势、模块缺陷分布、用…...

Gofile极速下载器:3倍下载速度的完整指南

Gofile极速下载器&#xff1a;3倍下载速度的完整指南 【免费下载链接】gofile-downloader Download files from https://gofile.io 项目地址: https://gitcode.com/gh_mirrors/go/gofile-downloader 在数字时代&#xff0c;文件分享已成为日常工作的一部分&#xff0c;但…...

论文党速看!2026实测靠谱的一键生成论文工具|实测必入避坑版

2026 年学术写作工具已高度分化&#xff0c;千笔AI与ThouPen为全流程首选&#xff0c;豆包、DeepSeek 为专项强手&#xff1b;避坑关键&#xff1a;拒绝假文献、严控 AIGC 率、优先国内适配、免费试用先行。 一、TOP3 全流程首选&#xff08;亲测不踩雷&#xff09; 1. 千笔AI&…...

创业团队如何利用Taotoken的多模型能力平衡效果与成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 创业团队如何利用Taotoken的多模型能力平衡效果与成本 对于资源有限的创业团队而言&#xff0c;在产品研发过程中&#xff0c;大模…...

学术 PPT 创作提速方案:九款 AI 工具,轻松攻克毕业答辩制作难题

okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPTAI PPT制作 - Okbiye智能写作https://www.okbiye.com/ppt 毕业答辩阶段&#xff0c;演示文稿制作成为多数学子耗时耗力的一大关卡。梳理论文脉络、匹配专业模板、规整内容排版、优化数据展示&#xff0…...

拯救B站缓存视频:3分钟学会m4s转mp4的终极方案

拯救B站缓存视频&#xff1a;3分钟学会m4s转mp4的终极方案 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾在B站缓存了珍贵的视频内容&a…...