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

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

csdh11 2025-03-06 13:53 15 浏览

摘要


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对象标识保存的状态

相关推荐

IDEA界面太丑??尝试一下这几个插件

前言IntelliJIDEA主要用于支持Java、Scala、Groovy等语言的开发工具,同时具备支持目前主流的技术和框架,擅长于企业应用、移动应用和Web应用的开发。IntelliJi...

小巧 Vue 页面滚动进度条组件ScrollProgress

今天给大家分享一个轻量级Vue.js全屏滚动进度条组件VueScrollProgress。vue-scroll-progress一款基于vue.js构建的页面滚动进度条组件,...

基于vue实现可视化拖拽编辑器,页面生成工具,提升前端开发效率

项目介绍基于vue实现的可视化拖拽编辑器,实现页面生成工具,提升前端开发效率。可以基层到移动端项目作为自定义json直接生成UI页面。项目特点功能特点...

优秀 vue+heyui 后端管理系统HeyUI-Admin

今天再给小伙伴们推荐一款成熟的企业中后台管理系统HEYUI-Admin。heyui-admin基于vue.js和heyui组件库构建的后台管理系统。包含基础表单/表格功能,拓展组件(图表、富文本编辑...

响应式 Vue.js 前端组件化框架Xvue-UI

今天给小伙伴们推荐一款超不错的Vue轻量级组件框架XVueUI。xvue-ui基于vue2.x构建的响应式前端组件化框架。轻量级、易于上手,提供...

《基于SpringBoot+Vue的在线视频系统设计与实现》开题报告

【计算机毕业设计案例】基于SpringBoot+Vue的在线视频系统设计与实现_哔哩哔哩_bilibili...

超好用 Vue.js 图片裁切组件Vue-ImgCutter

今天给小伙伴们分享一个超棒的Vue图片任意裁剪插件VueImgCutter。vue-img-cutter基于vue2.x构建的轻量级剪切图片组件。支持移动图像、放大缩小图片、任意移动图片、固定比...

Vue 3 进阶用法:异步组件(vue 异步组件原理)

一、代码分割一个大型前端应用,如果所有代码都放在单一文件,体积会特别大,下载时间长,白屏时间久,用户体验差。...

源码补丁神器—patch-package(源码助手怎么用)

作者:张浩一、背景vue项目中使用vue-pdf第三方插件预览pdf,书写业务代码完美运行,pdf文件内容正常预览无问题。后期需求有变,业务需求增加电子签章功能。这个时候pdf文件的内容可以显示出...

经验分享:Vue2 项目升级 Vue3 + Element Plus,借助Deepseek手动升级

Vue3出来好久了,我开发的项目还在使用Vue2框架,一般情况下不考虑升级,但是最近需要接入工作流程引擎之类的,看了下Vue2生态下操作空间不是很好,那索性尝试升级Vue3吧。一番操作下来,升级成功,...

34K Star!史上最全JavaScript资源库 awesome-javascript

34KStar!史上最全JavaScript资源宝库大揭秘引言在GitHub上,有一个备受瞩目的JavaScript资源仓库,以其全面的内容和精心的分类,成为了众多开发者的必备参考。这个拥有超过...

基于 Vue.js 磁片栅格布局组件VueGridLayout

#头条创作挑战赛#今天给大家分享一个超优秀的vue.js拖拽栅格布局插件VueGridLayout。...

6款高颜值 Vue3 PC端UI组件库(vue3开发组件库)

马上到国庆了,还没学习或者想学习vue3的小伙伴们有安排上没?这次推荐几个比较流行的VUE3UI组件库,合理利用,又或者学习借鉴都是不错的选择。1、element-pluselement-plus...

高性能 vue.js+ztree 树形组件Vue-GiantTree

今天给大家分享一款超棒的Vue海量数据渲染树形组件VueGiantTree。vue-giant-tree基于ztree封装的Vue树形组件。轻松实现大数据高性能渲染,适合海量数据渲染场景。zTr...

【推荐】2024年推荐的6款开源免费 Vue 后台管理系统模板,建议收藏

前言在现今的软件开发领域,...