百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

135.C# GDI+基础-创建Graphics类对象

myzbx 2025-05-27 16:21 6 浏览

摘要


GDI+是GDI(Windows Graphics Device Interface)的后继者,它是.NET Framework为操作图形提供的应用程序编程接口,主要用在窗体上绘制各种图形图像,可以用于绘制各种数据图像、数学仿真等。

Graphics类是GDI+的核心,它提供将对象绘制到显式设备的方法。Graphics类封装了绘制直线、曲线、圆形、图像和文本的方法,是一切GDI+操作的基础类。在绘图之前,必须在指定的窗体上创建一个Graphics对象,才能调用Graphics类的方法画图。

正文


Paint事件
在窗体或控件的Paint事件中创建,将其作为PaintEventArgs的一部分。在为控件创建绘制代码时,通常会使用此方法。

在Paint事件中创建Graphics对象

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);
    Graphics g = e.Graphics;
    Pen myPen = new Pen(Color.Blue, 2);//申明一个画笔,蓝色,宽度为2
    g.DrawLine(myPen, 10, 30, 10, 300);//划一条线
}

调用窗体或控件的CreateGraphics方法可以获取对Graphics对象的引用,该对象表示控件或窗体的绘图画面。

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);
    Graphics g = this.CreateGraphics();
    Pen myPen = new Pen(Color.Blue, 2);//申明一个画笔,蓝色,宽度为2
    g.DrawLine(myPen, 10, 30, 10, 300);//划一条线
}

由从Image继承的任何对象创建Graphics对象,调用Graphics.FromImage方法即可。

Graphics g = Graphics.FromImage(new Bitmap("D:\\MyProject\\ProjectC#\\carbon.jpg"));

属性



Clip

获取或设置 Region,它限定此 Graphics 的绘图区域。

ClipBounds

获取一个 RectangleF 结构,该结构限定此 Graphics 的剪辑区域。

CompositingMode

获取一个值,该值指定如何将合成图像绘制到此 Graphics。

CompositingQuality

获取或设置绘制到此 Graphics 的合成图像的呈现质量。

DpiX

获取此 Graphics 的水平分辨率。

DpiY

获取此 Graphics 的垂直分辨率。

InterpolationMode

获取或设置与此 Graphics 关联的插补模式。

IsClipEmpty

获取一个值,该值指示此 Graphics 的剪辑区域是否为空。

IsVisibleClipEmpty

获取一个值,该值指示此 Graphics 的可见剪辑区域是否为空。

PageScale

获取或设置此 Graphics 的世界单位和页单位之间的比例。

PageUnit

获取或设置用于此 Graphics 中的页坐标的度量单位。

PixelOffsetMode

获取或设置一个值,该值指定在呈现此 Graphics 的过程中像素如何偏移。

RenderingOrigin

为抵色处理和阴影画笔获取或设置此 Graphics 的呈现原点。

SmoothingMode

获取或设置此 Graphics 的呈现质量。

TextContrast

获取或设置呈现文本的灰度校正值。

TextRenderingHint

获取或设置与此 Graphics 关联的文本的呈现模式。

Transform

获取或设置此 Graphics 的几何世界转换的副本。

VisibleClipBounds

获取此 Graphics 的可见剪辑区域的边框。

方法



方法

描述

Clear

清除整个绘图面并以指定背景色填充

Dispose

释放由此Graphics对象使用的所有资源

DrawArc

绘制一段弧线,它表示由一对坐标、宽高指定的椭圆部分

DrawBezier

绘制由四个Point结构定义的贝塞尔样条

DrawBeziers

从Point结构的数组绘制一系列贝塞尔样条

DrawCurve

绘制经过一组指定的Point结构的基数样条

DrawEllipse

绘制一个由一对坐标、宽度和高度指定的椭圆

DrawIcon

在指定坐标处绘制由指定的Icon对象表示的图像

DrawImage

在指定的位置并且按原始大小绘制指定的Image对象

DrawLine

绘制一条连接由坐标对象指定的两个点的线条

DrawLines

绘制一列连接一组Point结构的线段

DrawPath

绘制GraphicsPath对象

DrawPie

绘制一个扇形,该扇形由一个坐标对象,宽度和高度,以及两条射线所指定的椭圆指定

DrawPolygon

绘制由一组Point结构定义的多边形

DrawRectangle

绘制由坐标对。宽度和高度指定的矩形

DrawRectangles

绘制一系列由Rectangle结构指定的矩形

DrawString

在指定位置并且用指定的Brush和Font对象绘制指定的文本字符串

FillEllipse

填充边框所定义的椭圆内部,该边框由一对坐标、一个高度和一个宽度指定

FillPath

填充GraphicsPath对象的内部

FillPie

填充扇形内部

FillPolygon

填充多边形内部

FillRectangle

填充由一对坐标、一个宽度和一个高度指定的矩形内部

FillRectangles

填充由Rectangle结构指定的一些列矩阵的内部

FillRegion

填充Region对象的内部

FromImage

从指定的Image对象创建行的Graphics对象

Save

保存此Graphics对象的当前状态,并且GraphicsState对象标识保存的状态

相关推荐

谷歌大刀阔斧,安卓UI将迎海量细节变更

前段时间谷歌宣布,将于北京时间2025年5月14日1时(美国太平洋时间5月13日10时)举行一场特别直播节目,名为《TheAndroidShow:I/OEdition》。该活动由Android...

Google Drive 通过新的分析功能改善视频播放器体验

GoogleDrive推出了一项新功能,可让您衡量上传到GoogleDrive的视频的参与度。Google在一篇博客文章中宣布,它已经更新了视频播放器的“详细信息”面板,新增了“分析”部分,...

DeepSeek生成Word方案

以下是结合DeepSeek生成网页、转PDF再转Word的三步进阶方案,涵盖普通用户与开发者两种实现路径:一、原生方案:HTML→PDF→Word全流程(适合普通用户)生成标准HTML使用DeepSe...

如何使用谷歌地图和LightningChart创建地理空间地图图表?

LightningChartJS是一款高性能的JavaScript图表工具,专注于性能密集型、实时可视化图表解决方案。LightningChartJS官方最新版免费下载试用,历史版本下载,在...

用 mxgraph.js 打造超实用流程图:从入门到精通(附源码)

在技术快速发展的当下,流程图作为一种直观展示流程和逻辑关系的工具,在项目管理、软件开发、业务流程梳理等诸多领域发挥着重要作用。今天我就和大家分享一下如何使用mxgraph.js构建功能丰富的流程图...

评测:4款免费开源数据可视化JavaScript库

交互式数据可视化在很大程度上取决于JavaScript库的任务能力。在这篇文章中,我们将看看四个JavaScript库:D3,InfoVis,Processing.js,和Recline.js。所有这...

DeepSeek自动生成漂亮的数据分析面板,会计天又塌了!老板超喜欢

如果你还在认为Deepseek分析能力强而做图弱时,只能说你根本不了解它。它其实可以自动生成高质量的数据分析面板。先来几个图吓吓你:如果不看标题,你是不是以为这是哪位数据分析高手做的图,嘿嘿,这的确是...

手绘风格的数据可视化 Sketchify,让你的图表也萌萌哒

作者|naughty来源|oschina.net/taogang/blog/3130390多少年以前,我在一家BI企业负责数据可视化产品的开发,作为产品创新的需要,一篇论文吸引了我的目光,《S...

告别单调,Django后台主页改造 - 使用AdminLTE组件

前言之前我做了个Django的项目,为了让管理后台更加美观,我对Django(应该说是SimpleUI的)默认的Admin后台主页进行改造,具体可以看这篇文章:项目完成-基于Django3.x版本...

Mermaid (美人鱼) 一个JS 渲染的图表工具

Mermaid是一种基于JavaScript的图表和图表工具,它使用受Markdown启发的文本定义和渲染器来创建和修改复杂的图表。Mermaid的主要目的是帮助文档跟上开发。图表和文档编...

分享10+可视图表库, 助你轻松制作精美可视化大屏

前言在开发可视化项目的过程中往往涉及到可视化图表,我们看到的很多酷炫的报表,大屏,都用了非常多的图表,接下来我和大家分享一些比较流行的开源免费的图表库.来源:趣谈前端公众号github:h...

JavaScript Charts更新至v3.15.2

JavaScriptCharts是兼容性好的JavaScript、HTML5图表开发工具,能满足大部分的开发需求,包括序列图表(列型图,条形图,线型图,面积图,步骤折线图,平滑折线图,蜡烛图,ohl...

JavaScript Charts更新至v3.17.0

JavaScriptCharts兼容性好的JavaScript、HTML5图表开发工具,能满足大部分的开发需求,包括序列图表(列型图,条形图,线型图,面积图,步骤折线图,平滑折线图,蜡烛图,ohlc...

最实用的大数据可视化分析工具汇总

四十三、OpenHeatMapOpenHeatMap简单易用,用户可以用它上传数据、创建地图、交流信息。它可以把数据(如GoogleSpreadsheet的表单)转化为交互式的地图应用,并在网上分享...

JavaScript Charts v3.17.3发布

JavaScriptCharts兼容性好的JavaScript、HTML5图表开发工具,能满足大部分的开发需求,包括序列图表(列型图,条形图,线型图,面积图,步骤折线图,平滑折线图,蜡烛图,ohlc...