C# 绘图基本方法

news/2024/5/19 18:49:05/文章来源:https://blog.csdn.net/weixin_42291376/article/details/128359998

一得到Graphics对象

1 OnPaint事件中使用

Protected overrid void OnPaint(PaintEventArgs e)
{Graphics g=e.Graphics;......
}

2 其他情况实现

Graphics g=this.CreaateGraphics();

二 关于Graphics的释放

1 对于CreateGraphics()得到的Graphics对象;

2 系统会自动释放,也可以显式地释放;

g.Dispose();

3 用这样也可以 using(Graphics g=this.CreateGraphics())

{…}
这种写法,相当于try{…}finally{g.Dispose();}

三 Pen 画笔

1 Pen

① 在System.Drawing名称空间中;
② 用来指定图形的轮廓,如颜色和宽度等;
③ 画笔创建
Pen pen=new Pen(Color.Blue,5);
④ 使用Pens类,直接用系统定义好的Pen
如 Pens.Red Pens.Blue;

2 画笔属性

在这里插入图片描述

四 Brush 画刷

1 Brush是一个抽象类,不能被直接new实例化

2 它有5个派生类,分别实现不同类型的画刷

① SolideBrush:实心画刷(最简单)
② HatchBrush:带阴影线的画刷;
③ LinearGradientBrush 填充颜色线性渐变的画刷;
④ PathGradientBrush 填充颜色沿着路径渐变的画刷;
⑤ TextureBrush 使用图像进行填充的画刷

3 使用Brushes类

Brushes.Red,Brushes.Yellow;

五 绘制文本

1 Font类

1)FontFamily 字体家族,如Times New Roman 字体等;

2)字体大小:float类型

3) 字体风格

① Bold 粗体;
② Italic 斜体;
③ Regular 正规;
④ Strikeout 加删除线;
⑤ UnderLine 加下斜线;

2 例如

Font myFont=new Font(“宋体”,16,FontStyle.Bold|FontStyle.Italic);
以上代码创建了宋体家族的字体对象,字体大小为16 ,样式为粗斜体。
这里用“|”(按拉或)运算来组合字体的风格;

六 DrawString 方法

DrawString(string,Font,Brush,PointF);
DrawString(string,Font,Brush,RectagleF);
DrawString(string,Font,Brush,PointF,StringFormat);
DrawString(string,Font,Brush,RectagleF,StringFormat);
DrawString(striing,Font,Brush,float,float);
DrawString(string,FOnt,Brush,float,float,StringFormat);

七 处理重绘和无效操作

1 调用以下几个方法

① void Invalidate();
void Invalidate(Rectangle);
使用控件的特定区域无效并想控件发送绘制消息;
② void Update()
使空间重绘其工作区域内的无效区域;
③ void Refresh()
相当于 this.Invalidate(true);this.Update();

2 双缓冲技术

1) 在内存中建立一块“虚拟画布”

Bitmap bmp=new Bitmap(600,600);

2) 获取这块内存画布的Graphics引用

Graphics g=Graphics.FromImage(bmp);

3) 在这块内存画布上绘图

g.FillEllipse(brush,i10,j10,10,10);
g.DrawLine() g.DrawString()等等;

4) 将内存画布画到窗口中

this.CreateGraphics().DrawImage(bmp,0,0);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_237160.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux权限】文件权限值,权限掩码,粘滞位,普通用户添加信任名单

目录 1.权限分为2种用户:超级用户,普通用户 2.文件类型和访问权限 ​3.权限掩码(八进制) 4.sudo短暂提升权限 5.粘滞位 1.权限分为2种用户:超级用户,普通用户 超级用户(通常为root&#x…

ArcGIS Pro 加载项(5)——样式符号属性对调

之前是已经通过Python构建脚本工具,实现了stylx文件的符号属性的对调。 ArcGIS Pro脚本工具(12)——样式符号属性对调_学学GIS的博客-CSDN博客为地类做样式符号匹配经常碰到这样的问题:属性表里面只有地类代码,但是做…

安全分析模型

安全分析模型自动化调优 MLOps(Machine Learning Operations)是一种人工智能 的工程实践,是面向机器学习项目的研发运营管理体系 。旨在实现 ML 管道的操作、ML 模型的部署和管理标准化,支持ML 模型的发布、激活、监控、性能跟踪…

MacOS配置GitHub SSH-key

mac和linux配置方法基本类似 打开终端连接到账户 git config --global user.name "xxxx" git config --global user.email "xxxxqq.com" 创建ssh-key ssh-keygen -t rsa -C "xxxxqq.com" 一路enter选择默认项,创建完成 查…

【云服务器 ECS 实战】一文掌握负载均衡服务原理及配置方法

一、负载均衡基本原理概述协议/端口轮询策略会话保持二、云服务器 ECS 负载均衡相关配置协议&监听配置后端服务器配置健康检查配置测试在上期文章中,介绍了负载均衡的概述及优势,并详细演示了阿里云服务器负载均衡服务的选型与购买配置。本期文章我们…

【YOLOv7-环境搭建③】PyCharm安装和环境、解释器配置

下载链接: 来源:(博主)唐三. 链接:https://pan.baidu.com/s/1y6s_EScOqvraFcx7iPSy1g 提取码:m1oa 安装: 以管理员身份打开安装完成后,打开软件到达以下界面,框框全选到达以下界面&#xf…

一起Talk Android吧(第四百四十五回:UI控件之TimePicker)

文章目录概念介绍使用方法内容总结各位看官们大家好,上一回中咱们说的例子是"UI控件之DatePicker",这一回中说的例子是"UI控件之TimePicker"。闲话休提,言归正转,让我们一起Talk Android吧! 概念介绍 看官们…

【Spring]SpringMVC

一、SpringMVC简介 1、什么是MVC MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分 M:Model,模型层。指工程中的JavaBean,作用是处理数据 JavaBean分为两类: 实体类Bean:专门存储业务数据…

ClassLoader 隔离性的基石是namespace,证明给你看

一、背景 朋友:在我知识体系中ClassLoader的双亲委派机制是流畅丝滑的,可是看到通过委派执行类加载来保障这种分治能力,进而达到了类资源的隔离性突然就感觉有点陌生和排斥呢? 我:类的命名空间有了解嘛? …

优秀的后端应该有哪些开发习惯?

见识过各种各样的代码,优秀的、垃圾的、不堪入目的、看了想跑路的等等,所以这篇文章记录一下一个优秀的后端 Java 开发应该有哪些好的开发习惯。 拆分合理的目录结构 受传统的 MVC 模式影响,传统做法大多是几个固定的文件夹 controller、service、mapper、entity,然后无限…

超越nnFormer!UNETR++:高效准确的3D医学图像分割

UNETR: Delving into Efficient and Accurate 3D Medical Image Segmentation 论文链接: https://arxiv.org/abs/2212.04497 代码链接: https://github.com/Amshaker/unetr_plus_plus 导读 这篇论文主要讲述了一种名为 UNETR 的 3D 医学图像分割方法&…

Spring MVC【创建与使用】

Spring MVC【创建与使用】🍎一.Spring MVC介绍🍒1.1 什么是SpringMVC?🍒1.2 MVC 定义🍒1.3 Spring MVC 与 MVC 的区别🍒1.4 Spring MVC的基本功能🍎二. Spring MVC项目的创建🍒2.1 Spring MVC …

[附源码]计算机毕业设计PythonQ宝商城(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

WebService基于Baidu OCR和Map API的导航服务

哈尔滨工业大学国家示范性软件学院 《面向服务的软件系统》大作业 项目题目: 基于OCR和地图API的路牌定位与导航服务 项目组成员: 姓名 学号 李启明 120L021920 完成日期: 2022年 12 月 15 日 1.选题 1.1 作业…

Spring Boot热部署配置

⭐️前言⭐️ 在我们进行Spring Boot项目的编写过程中,会有局部的代码,发生一些变动,这时候,我们只有将项目重启,发生变动的代码才能够生效,为了解决这个问题,我们可以设置Spring Boot热部署&a…

【财务】FMS财务管理系统---应收管理

笔者前面介绍了FMS财务管理系统相关逻辑结构,本篇文章继续对应收管理进行了系统的介绍,希望通过此文能够加深你对FMS财务管理系统的认识。 上一篇主要介绍了财务进销存系统的数据流与模块组成,知道了FMS系统中数据的来源并从系统结构上说明了…

Wireshark 实验

本部分按照数据链路层、网络层、传输层以及应用层进行分类,共有 10 个实验。需要使用协议分析软件 Wireshark 进行,请根据简介部分自行下载安装。 准备 请自行查找或使用如下参考资料,了解 Wireshark 的基本使用: 选择对哪块网…

Linux——linux面试题

cat a.txt | cut -d "/" -f 3 | sort | uniq -c |sort -nrgrep ESTABLISHED | awk -F " " {print $5} |cut -d ":" -f 1 | sort |uniq -c | sort -nr找回mysql的root用户的密码 首先,进入到/etc/my.cnf,插入一句skip-gra…

Linux——虚拟机安装Linux系统

实验1-2 虚拟机安装Linux系统 VMware 9.0 虚拟机Linux镜像ISO文件相关工具可以在这里边找到 http://pan.baidu.com/s/1ntA18FJ 或者请自行下载使用 创建新的虚拟机,如下图: 下一步:选择安装配置类型为“典型”如下图: 下一步&…

大厂频频裁员,0基础转行做IT是不是已经晚了

现在转行做程序员是不是已经晚了 转行不会晚,晚的是你数不清的犹豫 对于二十来岁刚毕业或者毕业没几年的人来说,经历过社会的“摧残”,面对着一眼能够望到头的工作,拿着也不太高的工资,总是会去寻求一些改变与其每天…