实例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;//设置下一个文字的角度
            }
        }

具体参考注释!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值