Winform 简单绘制公章
来源:互联网 发布:阿里云代备案系统 编辑:程序博客网 时间:2024/04/28 04:45
最近在研究GDI+画图,最主要的是调用NET类库中的Graphics类,利用该类可以实现各种绘图操作,本文使用Graphics类的DrawString方法、Draw Ellipse方法和MeasureString方法,分别在画布中绘制字符串、椭圆以及对字符串进行宽度和长度的测量(随文本字体变化)。分享一下,贴上核心代码:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Drawing.Drawing2D;namespace GraphicsApp{ public partial class Cachet : Form { public Cachet() { InitializeComponent(); this.panelCachet.Paint += new PaintEventHandler(panelCachet_Paint); } Font var_Font = new Font("Arial", 13, FontStyle.Bold);//定义字符串的样式 Rectangle rect = new Rectangle(40, 40, 300, 300);//定义一个矩形 private void Cachet_Load(object sender, EventArgs e) { } private void btnCachet_Click(object sender, EventArgs e) { PaintEventArgs ep = e as PaintEventArgs; panelCachet_Paint(sender, ep); } private void panelCachet_Paint(object sender, PaintEventArgs e) { int Circle_Line = 0;//记录圆的直径 int Circle_Brush = 4;//记录圆画笔的粗细 if (panelCachet.Width >= panelCachet.Height)//panelCachet的宽度大于高度 { Circle_Line = panelCachet.Height;//设置高度为圆的直径 } else { Circle_Line = panelCachet.Width;//设置宽度为圆的直径 } //设置圆的绘制区 rect = new Rectangle(Circle_Line / 2 + Circle_Brush, Circle_Brush, Circle_Line - Circle_Brush * 2, Circle_Line - Circle_Brush * 2); Font star_Font = new Font("Arial", 30, FontStyle.Regular);//设置星号的字体样式 string star_Str = "★";//设置星号的字符串 Graphics g = this.panelCachet.CreateGraphics();//实例化Graphic类 g.SmoothingMode = SmoothingMode.AntiAlias;//消除绘制图形的锯齿,平滑 g.Clear(Color.White);//以白色清空panelCachet画布背景 Pen mypen = new Pen(Color.Red, Circle_Brush);//设置画笔的颜色 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 + Circle_Brush - 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 + Circle_Brush - var_Size.Width / 2F, rect.Height / 2F + var_Size.Height * 2)); string tempstr = "重庆市XXX科技有限公司"; int len = tempstr.Length; float angle = 180 + (180 - len * 20) / 2;//设置文字的旋转角度,以20度的弧度旋转 for (int i = 0; i < len; i++)//旋转每一个字 { //将指定的平移添加到g的变换矩阵前 g.TranslateTransform((Circle_Line + Circle_Brush / 2) , (Circle_Line + Circle_Brush / 2) / 2); g.RotateTransform(angle);//将指定的旋转用于Graphic类的变换矩阵 Brush mybrush = Brushes.Red;//定义画笔 g.DrawString(tempstr.Substring(i, 1), var_Font, mybrush, 60, 0);//显示旋转每一个文字 g.ResetTransform();//将Graphics类的全局变换矩阵重置为单位矩阵 angle += 20;//设置下一个文字的显示角度 } } }}
运行结果:
- Winform 简单绘制公章
- Winform自定义绘制TreeView
- C# Winform绘制动态曲线
- Winform的Panel绘制边框
- 利用C#制作公章
- 利用C#制作公章
- 利用C#制作公章
- 用photoshop扣公章
- winform简单截图
- C# Winform中绘制动画的方法
- C# WinForm 绘制圆角窗体
- [转]C# WinForm 绘制圆角窗体
- C# WinForm 绘制圆角窗体
- winform 如何绘制窗体? - what a mess
- 在winform中绘制矩形的方法
- C# WinForm验证码与图片绘制
- winform引用Teechart可以绘制世界地图
- Winform Chart控件绘制阴影区域
- jetty服务器的安装和部署、新增到开机启动服务
- android打电话实现分析
- webserivce的总结!
- 常见设计模式之Builder篇
- 接电话流程学习
- Winform 简单绘制公章
- 基于adnroid平台的window纸牌游戏
- eclipse3.3安装jbmp3.2.2 工作流
- android电话应用程序概述
- 10954 - Add All
- WEB开发_路漫漫,少贤才
- 这是什么情况??javascript
- 使用Javamail发送邮件例子和相关的解释
- 10020 - Minimal coverage