实例118-绘图技术-绘制公章

2023-11-06 06:20

本文主要是介绍实例118-绘图技术-绘制公章,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本节描述绘图中的公章的绘制。

本例程序下载地址:https://download.csdn.net/download/chongxing01/12266063

公章图片如下:

这个项目所要应用的技术如下:

1.在画板中绘制文本,如图中的“专用章”。

2.在画板中绘制圆形,如图中的圆。

3.旋转并移动坐标系,绘制文本,如图中的文本“C#绘图技术之绘图专用章”,逐个文本旋转绘制。

       private void button1_Click(object sender, EventArgs e){int tem_Line = 0;//记录圆的直径int circularity_W = 4;//设置圆画笔的粗细Var_Font = new Font("Arial", center_r/12, FontStyle.Bold);//定义字符串的字体样式tem_Line = center_r;rect = new Rectangle(circularity_W, circularity_W, tem_Line - circularity_W * 2, tem_Line - circularity_W * 2);//设置圆的绘制区域Font star_Font = new Font("Arial", center_r/4, FontStyle.Regular);//设置星号的字体样式string star_Str = "★";Graphics g = this.panel1.CreateGraphics();//实例化Graphics类g.SmoothingMode = SmoothingMode.AntiAlias;//消除绘制图形的锯齿g.Clear(Color.White);//以白色清空panel1控件的背景Pen myPen = new Pen(Color.Red, circularity_W);//设置画笔的颜色g.DrawEllipse(myPen, rect); //绘制圆 SizeF Var_Size = new SizeF(rect.Width, rect.Width);//实例化SizeF类Var_Size = g.MeasureString(star_Str, star_Font);//对指定字符串进行测量//要指定的位置绘制星号g.DrawString(star_Str, star_Font, myPen.Brush, new PointF((rect.Width / 2F) + circularity_W - Var_Size.Width / 2F, rect.Height / 2F - Var_Size.Width / 2F));Var_Size = g.MeasureString("专用章", Var_Font);//对指定字符串进行测量//绘制文字g.DrawString("专用章", Var_Font, myPen.Brush, new PointF((rect.Width / 2F) + circularity_W - Var_Size.Width / 2F, rect.Height / 2F + Var_Size.Height * 2));string tempStr = "C#绘图技术之绘制专用章";int len = tempStr.Length;//获取字符串的长度float angle = 180 + (180 - len * 20) / 2;//设置文字的旋转角度for (int i = 0; i < len; i++)//将文字以指定的弧度进行绘制{//将指定的平移添加到g的变换矩阵前g.TranslateTransform((tem_Line + circularity_W / 2) / 2 + (float)(Math.Cos(angle * Math.PI / 180) * tem_Line/2.3),(tem_Line + circularity_W / 2) / 2 + (float)(Math.Sin(angle * Math.PI / 180) * tem_Line/2.3));g.RotateTransform(angle+90);//将指定的旋转用于g的变换矩阵   Brush myBrush = Brushes.Red;//定义画刷g.DrawString(tempStr.Substring(i, 1), Var_Font, myBrush, 0, 0);//显示旋转文字g.ResetTransform();//将g的全局变换矩阵重置为单位矩阵angle += 20;//设置下一个文字的角度}}

具体参考注释!

 

这篇关于实例118-绘图技术-绘制公章的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/354924

相关文章

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

Apache Ignite缓存基本操作实例详解

《ApacheIgnite缓存基本操作实例详解》文章介绍了ApacheIgnite中IgniteCache的基本操作,涵盖缓存获取、动态创建、销毁、原子及条件更新、异步执行,强调线程池注意事项,避免... 目录一、获取缓存实例(Getting an Instance of a Cache)示例代码:二、动态

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN