上个月免费帮别人做事,就一直在服务员和程序员中来回切换,所以好多事情都弄得乱糟糟的,家里也是乱七八糟的,所以学习这一块也放了一段时间。

刚刚开始当服务员的时间看到了形形色色的人,觉得很好玩,他们每个人像代码又不像,有的很简单,有的很美观,有的很复杂,有的还很神奇,可是他们确可以来回切换,很简单的能瞬间变复杂,很美观的也能瞬间变得不堪。所有你以为的,能瞬间翻天覆地。

第一天去做事的时候,别人来了,我整个人都是懵的,完全不知道干什么,该做什么,该怎么说,大众会喜欢什么,不喜欢什么,如果遇到别人不高兴了,应该化解,所有的一切都是一片空白,整个人真的和傻子没什么区别.....( ╯□╰ )......大脑程序完全死机,但重启不了。

后面每天一点一点去学才稍微能开始说话的,几个服务员姐姐教了我很多,她们有的实在,有的木讷,有的精明,有的聪慧,和代码相处久了,突然看到了活生生的,个性如此鲜明的人,就像突然间打开了新世界的大门一般,一切都新奇耀眼。她们和读书的时候遇见的各种同学,老师,家长甚至现在的同事都不一样,她们都有深刻的社会印记,她们都有自己鲜明的个性,独树一帜!每个人都像颗彩色的石头一般,有的地方璀璨夺目,有的地方暗淡无光。

以后若是有空想起,再写写她们的模样吧,这也算每一天遇见的不同的风景的。

闲话说了很多,回到正题,最近开始学习图像处理这一块了,学一点就记录一点,等写完也出了一个小软件了~

这里的是:绘制公章。

 #region 绘制公章
private void simpleButton_绘制公章_Click(object sender, EventArgs e)
{
int tem_Line = ; //圆的直径
int circularity_W = ; //画笔的粗细
string star_Str = "★"; //星星
Font star_Font = new Font("Arial", , FontStyle.Regular);//设置星号的字体样式 #region 画圆 if (panel_绘制公章.Height > panel_绘制公章.Width) //如果panel控件的高度大于等于宽度
{
tem_Line = panel_绘制公章.Width; //设置宽度为圆的直径
}
else
{
tem_Line = panel_绘制公章.Height; //设置高度为圆的直径
}
//设置圆的绘制区域=>现在是正方形的区域
rect = new Rectangle(circularity_W, circularity_W, tem_Line - * circularity_W, tem_Line - * circularity_W); //补充:Graphics必须有载体,也就是在哪里绘
//所以必须是this.CreateGraphics或者Panel..CreateGraphics等格式
Graphics g = panel_绘制公章.CreateGraphics();//实例化Graphics类
//消除绘制图形的锯齿
g.SmoothingMode = SmoothingMode.AntiAlias; //System.Drawing.Drawing2D;
g.Clear(Color.White); //以白色清空panel1控件的背景,防止重复画
Pen myPen = new Pen(Color.Red, circularity_W); //设置画笔(颜色和粗细)
g.DrawEllipse(myPen, rect); //绘制圆 #endregion #region 画星星 SizeF Var_Size = new SizeF(rect.Width, rect.Height); //实例化SizeF类
Var_Size = g.MeasureString(star_Str, star_Font); //对指定字符串进行测量 //正中间的位置绘制星号
float star_x = (rect.Width / 2F) + circularity_W - Var_Size.Width / 2F;
float star_y = rect.Height / 2F - Var_Size.Width / 2F;
g.DrawString(star_Str, star_Font, myPen.Brush, new PointF(star_x, star_y)); #endregion #region 画文字 Var_Size = g.MeasureString("本人专用章", Var_Font);//对指定字符串进行测量 //绘制文字:在中间,但是在星星下面
float m = (rect.Width / 2F) + circularity_W - Var_Size.Width / 2F;
float n = rect.Height / 2F + Var_Size.Height * ;
g.DrawString("本人专用章", Var_Font, myPen.Brush, new PointF(m, n)); int len = ;
if (inputWords != null) //如果没有输入文字,加判断
{
len = inputWords.Length;//获取字符串的长度
} float angle = ;//设置文字的初始旋转角度 float change = ; if (len > ) //一个字的需要特殊处理
{
change = / (len - );
}
for (int i = ; i < len; i++)//将文字以指定的弧度进行绘制
{
if (len > )
{
//相当于把坐标系移动到了正中间
float x = (tem_Line + circularity_W / ) / ;
float y = (tem_Line + circularity_W / ) / ;
//将指定的平移添加到g的变换矩阵前
g.TranslateTransform(x, y);
g.RotateTransform(angle);//将指定的旋转用于g的变换矩阵
Brush myBrush = Brushes.Red;//定义画刷 //需要注意,这时文字的位置的坐标位置是以新的坐标系为基础得到的
float words_x = tem_Line / - * circularity_W;
float words_y = ;
g.DrawString(inputWords.Substring(i, ), Var_Font, myBrush, words_x, words_y);//显示旋转文字
g.ResetTransform();//将g的全局变换矩阵重置为单位矩阵=>对应TranslateTransform,相当于恢复操作
angle += change;//设置下一个文字的角度 }
else
{
//输入的文字为一个时候是特殊情况,单独考虑
float x = (tem_Line + circularity_W / ) / ;
float y = (tem_Line + circularity_W / ) / ;
g.TranslateTransform(x, y);
g.RotateTransform();
Brush myBrush = Brushes.Red;
float words_x = -circularity_W*;
float words_y = -(tem_Line / - * circularity_W);
g.DrawString(inputWords.Substring(i, ), Var_Font, myBrush, words_x, words_y);
g.ResetTransform();
} } #endregion } private void simpleButton2_Click(object sender, EventArgs e)
{
inputWords = textBox_文字.Text;
MessageBox.Show("保存成功!");
}
#endregion

效果预览图:

C#学习笔记-图像处理篇(一)绘制公章的更多相关文章

  1. PHP学习笔记 - 进阶篇(9)

    PHP学习笔记 - 进阶篇(9) 图形图像操作 GD库简介 GD指的是Graphic Device,PHP的GD库是用来处理图形的扩展库,通过GD库提供的一系列API,可以对图像进行处理或者直接生成新 ...

  2. PHP学习笔记 - 进阶篇(2)

    PHP学习笔记 - 进阶篇(2) 函数 1.自定义函数 PHP内置了超过1000个函数,因此函数使得PHP成为一门非常强大的语言.大多数时候我们使用系统的内置函数就可以满足需求,但是自定义函数通过将一 ...

  3. PHP学习笔记 - 进阶篇(11)

    PHP学习笔记 - 进阶篇(11) 数据库操作 PHP支持哪些数据库 PHP通过安装相应的扩展来实现数据库操作,现代应用程序的设计离不开数据库的应用,当前主流的数据库有MsSQL,MySQL,Syba ...

  4. PHP学习笔记 - 进阶篇(10)

    PHP学习笔记 - 进阶篇(10) 异常处理 抛出一个异常 从PHP5开始,PHP支持异常处理,异常处理是面向对象一个重要特性,PHP代码中的异常通过throw抛出,异常抛出之后,后面的代码将不会再被 ...

  5. PHP学习笔记 - 进阶篇(8)

    PHP学习笔记 - 进阶篇(8) 日期与时间 取得当前的Unix时间戳 UNIX 时间戳(英文叫做:timestamp)是 PHP 中关于时间与日期的一个很重要的概念,它表示从 1970年1月1日 0 ...

  6. PHP学习笔记 - 进阶篇(7)

    PHP学习笔记 - 进阶篇(7) 文件操作 读取文件内容 PHP具有丰富的文件操作函数,最简单的读取文件的函数为file_get_contents,可以将整个文件全部读取到一个字符串中. $conte ...

  7. PHP学习笔记 - 进阶篇(6)

    PHP学习笔记- 进阶篇(6) 会话控制(session与cookie) 当前的Cookie为: cookie简介 Cookie是存储在客户端浏览器中的数据,我们通过Cookie来跟踪与存储用户数据. ...

  8. PHP学习笔记 - 进阶篇(4)

    PHP学习笔记 - 进阶篇(4) 字符串操作 字符串介绍 PHP开发中,我们遇到最多的可能就是字符串. 字符串变量用于包含字符串的值. 一个字符串 通过下面的3种方法来定义: 1.单引号 2.双引号 ...

  9. PHP学习笔记 - 进阶篇(5)

    PHP学习笔记 - 进阶篇(5) 正则表达式 什么叫正则表达式 正则表达式是对字符串进行操作的一种逻辑公式,就是用一些特定的字符组合成一个规则字符串,称之为正则匹配模式. $p = '/apple/' ...

随机推荐

  1. WCF入门教程(二)如何创建WCF服务

    WCF入门教程(二)从零做起-创建WCF服务 通过最基本的操作看到最简单的WCF如何实现的.这是VS的SDK默认创建的样本 1.创建WCF服务库 2.看其生成结构 1)IService1.cs(协议) ...

  2. asp.net 301重定向代码

    /// <summary> ///重定向代码 /// </summary> /// <param name="sender"></para ...

  3. failover机制的小讨论

    对于一个7*24小时无间断的线上服务来说,在服役时间内难免会遇到一些fail,例如db断开连接且短暂连接不上了, 下游的某个节点忽然挂了,运维部署上依赖的某一个东西不存在了等等场景.本文主要来讨论一下 ...

  4. 基于CkEditor实现.net在线开发之路(4)快速布局,工具箱,模板载入,tab选项卡简单说明与使用

    上一章给常用的from表单控件属性页面,进行了简单说明和介绍,但是由于是在网页中做界面设计,操作肯定没有桌面应用程序方便,便捷,为了更方便的布局与设计,今天我主要说一下快速布局,工具箱,tab选项卡, ...

  5. web前端--边框的特征

    1.一个面试题:边框是什么形状的? 你可能认为是一个矩形的  细心地人可能说是 梯形  或者 三角形 比较合理的答案是 非矩形的 2.画三角形 将div的width height 都设置为0px bo ...

  6. Tomcat问题,不能正确访问http://localhost:8080/

    最近在学Struts2框架部分的内容,但是eclipse中配置tomcat遇到了很大的问题,当辛辛苦苦的配置完了之后,竟让连小猫的首页都不能访问,http://localhost:8080/输入了之后 ...

  7. 【工匠大道】一些Vim(Linux)不常见但很逼格的命令(不断更新中)

    本文地址 分享提纲: 1. :Tlist 2. :colorscheme 3. :set cursorline 4. ma 5. vim -x 6. CTRL-] 7. 折叠 8. 向别的用户终端写信 ...

  8. 悟透JavaScript(理解JS面向对象的好文章)

    引子 编程世界里只存在两种基本元素,一个是数据,一个是代码.编程世界就是在数据和代码千丝万缕的纠缠中呈现出无限的生机和活力. 数据天生就是文静的,总想保持自己固有的本色:而代码却天生活泼,总想改变这个 ...

  9. [TypeScript] 建立与使用AMD Library

    [TypeScript] 建立与使用AMD Library 前言 使用Visual Studio开发TypeScript项目时,开发人员可以将可重用的程序代码,封装为AMD Library来提供其他开 ...

  10. 使用C#类向数据库添加数据的例子源码

    在上一篇中,增加了sql server数据库操作类SqlOperator,用于操作sql server数据库.还有一个SqlStringHelper类,用于处理sql语句的单引号.那么这两个类怎么使用 ...