您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 衡阳分类信息网,免费分类信息发布

C#图像处理绘制公章

2024/3/5 15:04:36发布15次查看
最近开始学习图像处理这一块了,学一点就记录一点,等写完也出了一个小软件了~
这里的是:绘制公章。
#region 绘制公章 private void simplebutton_绘制公章_click(object sender, eventargs e) { int tem_line = 0; //圆的直径 int circularity_w = 5; //画笔的粗细 string star_str = "★"; //星星 font star_font = new font("arial", 30, 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 - 2 * circularity_w, tem_line - 2 * 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 * 2; g.drawstring("本人专用章", var_font, mypen.brush, new pointf(m, n)); int len = 0; if (inputwords != null) //如果没有输入文字,加判断 { len = inputwords.length;//获取字符串的长度 } float angle = 180;//设置文字的初始旋转角度 float change = 0; if (len > 1) //一个字的需要特殊处理 { change = 180 / (len - 1); } for (int i = 0; i < len; i++)//将文字以指定的弧度进行绘制 { if (len > 1) { //相当于把坐标系移动到了正中间 float x = (tem_line + circularity_w / 2) / 2; float y = (tem_line + circularity_w / 2) / 2; //将指定的平移添加到g的变换矩阵前 g.translatetransform(x, y); g.rotatetransform(angle);//将指定的旋转用于g的变换矩阵 brush mybrush = brushes.red;//定义画刷 //需要注意,这时文字的位置的坐标位置是以新的坐标系为基础得到的 float words_x = tem_line / 2 - 6 * circularity_w; float words_y = 0; g.drawstring(inputwords.substring(i, 1), var_font, mybrush, words_x, words_y);//显示旋转文字 g.resettransform();//将g的全局变换矩阵重置为单位矩阵=>对应translatetransform,相当于恢复操作 angle += change;//设置下一个文字的角度 } else { //输入的文字为一个时候是特殊情况,单独考虑 float x = (tem_line + circularity_w / 2) / 2; float y = (tem_line + circularity_w / 2) / 2; g.translatetransform(x, y); g.rotatetransform(0); brush mybrush = brushes.red; float words_x = -circularity_w*3; float words_y = -(tem_line / 2 - 2 * circularity_w); g.drawstring(inputwords.substring(i, 1), var_font, mybrush, words_x, words_y); g.resettransform(); } } #endregion } private void simplebutton2_click(object sender, eventargs e) { inputwords = textbox_文字.text; messagebox.show("保存成功!"); } #endregion
效果预览图:
衡阳分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录