多种方式绘制简单的作废章

news2024/11/18 1:42:05

  作废章是常用的长方形印章,其形式如下图所示(图片来自参考文献1)。印章的形式很简单,就是红色方框内显示作废两个字,其实在网上百度长方形印章的话,可以搜索出很多类似形式的印章,区别仅在于尺寸不同及印章内容不同。
作废章
  本文梳理之前学过的C#的GDI+、html的canvas、python的turtle及html的div标签等知识,列出上述四种编程方式的作废章绘制形式。

C#的GDI+

  采用GDI+绘制边框的话,直接调用DrawRectangle即可,但是绘制文字的话可以采用两种方法。一种是直接绘制文字,直接调用DrawString绘制文本,这种方式需要调整文本字体大小以符合边框尺寸,另一种是先固定字体,将文本转成图片,然后用DrawImage方式将带文本的图片绘制到边框内。这两种方式的绘图效果及代码如下所示:

			Graphics g = e.Graphics;

            Font f = new Font("楷书", 20, FontStyle.Bold);
            string text = "作 废";
            Size s = g.MeasureString(text, f).ToSize();
            Bitmap img = new Bitmap(s.Width + 1,s.Height + 1);
            using(Graphics imgG=Graphics.FromImage(img))
            {
                using(StringFormat sf=new StringFormat())
                {
                    sf.Alignment = StringAlignment.Far;
                    sf.LineAlignment = StringAlignment.Center;

                    imgG.DrawString(text, f, Brushes.Red, new RectangleF(0, 0, img.Width, img.Height), sf);
                }                
            }
            
            using(Pen p=new Pen(Brushes.Red,5))
            {
                g.DrawRectangle(p, new Rectangle(50, 50, 96, 39));
                g.DrawString(text, f, Brushes.Red, new Rectangle(50, 50, 96, 39));

                g.DrawRectangle(p, new Rectangle(50, 150, 96, 39));
                g.DrawImage(img, new Rectangle(53, 154, 90, 35));                
            }

在这里插入图片描述

html的canvas

  canvas的绘图思路主要是调用strokeRect和fillText函数绘制边框和内容,需要注意的是文本对齐的设置方式,这点详见参考文献4。绘制代码及效果如下图所示:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8"/>
    <script>
      window.onload=function()
      {
        var cnv=document.getElementById("canvas");
        var cxt=cnv.getContext("2d");
        
        cxt.strokeStyle="red";
        cxt.lineWidth=4;
        cxt.strokeRect(20,20,96,39);
        
        cxt.font="bold 35px 楷体";
        cxt.fillStyle="red";
		cxt.textBaseline = "top";
        cxt.fillText("作 废",20,20);
      }
    </script>
  </head>
  <body>
    <canvas id="canvas" width="200" height="100" style="border:1px dashed gray;"></canvas>
  </body>
</html>

在这里插入图片描述

python的turtle

  采用tkinter中的canvas组件可以绘制作废章,不过最近在学turtle的基本用法,想着用turtle实现更简单。绘制代码及效果如下图所示:

import turtle

turtle.color('red')
turtle.pensize(5)
turtle.penup()
turtle.goto(-50,50)
turtle.pendown();
turtle.forward(96)
turtle.right(90);
turtle.forward(39)
turtle.right(90);
turtle.forward(96)
turtle.right(90);
turtle.forward(39)

turtle.penup()
turtle.goto(-40,15)
turtle.pendown();
turtle.write("作 废",align="left",font=("楷体", 22, "bold"))

turtle.hideturtle()
turtle.done()

在这里插入图片描述

html的div

  不编写代码,使用html的div和span标签,通过CSS设置来配成作废章的样式(CSS的东西确实搞不太懂,主要参照参考文献5设置的文本对齐)。html代码及效果如下图所示:

.border{
    position: absolute;
    left: 50px;
    top: 50px;
    width: 96px;
    height: 39px;
    border: 4px solid red;
}

#content{
  color : red;
  font-size:30px;
  font-weight:bold;
  font-family: 楷体;
  margin: 0 auto;
  display: table;
}

<div class="border">
   <span id="content">作 废</span>       
</div>

在这里插入图片描述

参考文献
[1]https://item.jd.com/1684454184.html#none
[2]https://www.runoob.com/w3cnote/html5-canvas-intro.html
[3]https://codepen.io/
[4]https://www.twle.cn/l/yufei/canvas/canvas-basic-text-textbaseline.html
[5]https://www.cnblogs.com/HtmlDuck/p/16258806.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/70376.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

lcd屏调试记录

一&#xff0c;lcd屏介绍 LCD液晶屏的接口类型非常丰富&#xff0c;最常用的接口主要有RGB、MCU、LVDS、MIPI接口。 1、RGB接口 LCD液晶屏的RGB接口通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及三者组合来得到丰富多彩的颜色&#xff0c;RGB分别代表红、绿、蓝三个通道的…

QT:多进程

标题1.多进程2.多线程3.常用方法1.多进程 (1)创建进程对象 QProcess::QProcess(QObject *parent nullptr)(2)启动进程去执行另外一个程序 void QProcess::start(const QString &command) //类似于system()/exec函数族 参数&#xff1a;command --》你要执行的另外一个程序…

36氪2022年Q3总收入同比增长两位数超预期,连续第四个季度盈利,广告收入同比增长20%

12月7日&#xff0c;36氪&#xff08;证券代码&#xff1a;KRKR&#xff09;披露2022年第三季度业绩。该季度36氪总收入同比增长11.5%至9461万元&#xff0c;净利润249万元&#xff0c;连续第四个季度实现盈利。 本季度&#xff0c;36氪广告业务持续表现优异&#xff0c;实现了…

windows电脑关机开机后没声音,重启就有声音故障处理方法

今天遇到一件非常奇葩的windows电脑, 从关机状态下进入系统没有声音,且从以下几点判断声卡硬件及驱动不存在故障,详见如下: 1、开机后任务栏右下角声音图标正常 2、声音设置——扬声器/麦克风(Realtek(R) Audio)正常; 3、windows+x键,选择“设备管理器”,找到“音频…

Primavera Unifier 常用标准数据要素

目录 一&#xff1a;什么是数据要素 二&#xff1a; 常用数据要素字段 一&#xff1a;什么是数据要素 数据元素是Oracle Primavera Unifier维护业务单据/表达的最小单元&#xff0c;也就是我们常说的字段&#xff0c;她将数据定义与字段标签相结合&#xff0c;成为用户在 Pr…

用70行Python编写一个概率编程语言

1、简介 在这篇文章中&#xff0c;我将介绍概率编程语言&#xff08;Probabilistic Programming Languages&#xff0c;简称PPL&#xff09;的工作原理&#xff0c;并逐步演示如何用Python构建一个简单的概率编程语言。 本文主要面向的读者是统计学家、AI研究员和好奇的程序员…

Python+Appium自动化测试(14)-yaml配置Desired capabilities

目录&#xff1a;导读 一&#xff0c;前言 二&#xff0c;使用yaml文件配置Capabilities示例 三&#xff0c;更新yaml文件的内容 四&#xff0c;结语 一&#xff0c;前言 在之前的appium自动化测试示例中&#xff0c;我们都是把构造driver实例对象的数据&#xff08;即Des…

对于单例,多进程的误解

单例 单例在多线程下&#xff0c;可以保证全局唯一&#xff0c;但在多进程下呢&#xff1f;子进程不共享父进程的变量 所以&#xff0c;每个进程都维护着一个自己的单例。 验证 创建appserver 以flask为例&#xff0c;以包的形式创建一个单例 # view.py-----------------…

四十、Java 多线程编程

Java 多线程编程 Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流&#xff0c;一个进程中可以并发多个线程&#xff0c;每条线程并行执行不同的任务。 多线程是多任务的一种特别的形式&#xff0c;但多线程使用了更小的资源开销。 这里定义和…

移动WEB开发之rem布局--苏宁首页案例制作(flexible.js)

简洁高效的rem适配方案flexible.js 手机淘宝团队出的简洁高效 移动端适配库 我们再也不需要在写不同屏幕的媒体查询&#xff0c;因为里面js做了处理 它的原理是把当前设备划分为10等份&#xff0c;但是不同设备下&#xff0c;比例还是一致的。 我们要做的&#xff0c;就是确…

[附源码]Python计算机毕业设计Django学生疫情防控信息填报系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

【Java面试】说说你对ThreadLocal内存泄漏问题的理解

文章目录前置知识为什么会产生内存泄漏问题&#xff1f;如何解决内存泄露问题&#xff1f;为什么要使用弱引用&#xff1f;前置知识 讲解ThreadLocal的内存泄漏问题之前&#xff0c;首先得先知道什么是内存泄漏。 Memory overflow&#xff1a;内存溢出&#xff0c;没有足够的内…

第02章_MySQL环境搭建

目录第02章_MySQL环境搭建服务启动与停止登录MySQL查看版本退出MySQL1. MySQL操作1.1 MySQL的使用演示数据库查看所有的数据库创建数据库使用数据库查看数据库的创建信息删除数据库表格查看数据库的所有表格创建新的表格查看一个表的数据添加一条记录查看表的创建信息删除表格1…

FineReport地图数据图表-按钮控件

1. 概述 1.1 版本 报表服务器版本 功能变更 11.0 -- 1.2 应用场景 「按钮控件」可应用于填报、参数等场景中&#xff0c;添加按钮后&#xff0c;点击按钮可触发某些报表操作。如下图所示&#xff1a; 1.3 如何添加 1.3.1 填报控件 选中单元格后&#xff0c;点击右侧属性…

Python中的__init__.py的高级用法

刚开始学习编程&#xff0c;我们很少会关注这个文件&#xff0c;只知道一个目录中存在该文件&#xff0c;该目录就是一个package&#xff0c;不存在就是普通的目录&#xff0c;普通的目录在导入包时&#xff0c;pycharm并不会智能提示。 Python中每新建一个package都会默认生成…

使用VMware 16 安装中标麒麟 7

目录 1、下载中标麒麟7 2、虚拟机配置 3、NeoKylin7安装 1、下载中标麒麟7 百度网盘&#xff1a;百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可…

全网最牛最全面的全栈Jmeter性能测试之生成测试报告

结构 ps【文章末尾给大家留下了大量的福利】 测试计划 测试计划是顶级的层级⽬录的结构&#xff0c; 那么在这样的⽬录结构中&#xff0c;⾥⾯可以包含很多线程组 线程组 线程组我们可以简单的理解为postman测试⼯具⾥⾯的collection&#xff0c;那么在整体线程组⾥⾯&…

本地虚拟机linux中nginx搭建

nginx&#xff1a;主要管理服务器中的tomcat,将服务端接受的请求交给nginx来处理&#xff0c;分配给不同的tomcat处理&#xff0c;同时nginx根据每个服务器的性能来配置不同的权重,权重越大访问到的概率就越大&#xff0c;权重越小访问到的概率越低 安装nginx 1,在usr目录下创建…

个人网页设计成品DW静态网页 HTML网页设计结课作业 web课程设计网页规划与设计 Web大学生个人网页成品 web网页设计期末课程大作业

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

QGIS获取行政区geojson数据以及数据乱码修复

安装QGIS 1.下载 访问下面的地址&#xff0c;直接下载安装 https://qgis.org/zh-Hans/site/ 2.设置QGIS语言 点击Settings->Options 点击General&#xff0c;然后按图示选择对应选项。 点击确定&#xff0c;然后等待一会儿&#xff0c;关闭软件重新打开就好了。 安装Qu…