画布创作,签名大致就是起笔落笔

news2024/12/29 10:58:21

画布创作,签名大致就是起笔落笔

前言

在画布创作过程中,签名手的基本形态是,不停的点、划。
就像我们写字一样,字越写越大,但是我们不知道笔画的大小。
一个字是一个非常小的点、横,一个横就把这个字给分成了很多。
签名时,这个点一定要画好,如果没有一定的形状的话,签名写完了再去画它肯定是废掉了。
所以说一个签名好不好看,先看它有没有形状?
没有形状不好或者太直的话就会让人觉得很难看懂它。

在这里插入图片描述


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>canvas自定义画板</title>
</head>
<style>
    *{
        margin: 0;
        padding: 0;
    }
    #container{
        margin: 0 auto;
        width: 1200px;
        /*text-align: center;*/
    }
    #canvas{
        border: 2px solid #ff6700;
        cursor:crosshair;
        /*不能用这种方式给canvas设置宽高*/
        /*width: 1200px;*/
        /*height: 300px;*/
    }
    .btn{
        width:70px;
        height: 40px;
        border-radius: 10px;
        border: 1px solid #aaa;/*去掉<button>默认边框*/
        outline:none;/*去掉<button>选中时的默认边框*/
    }
    #image_png{
        width: 300px;
        height: 150px;
        border:  2px solid #ff6700;
        display: block;
        margin: 10px auto;
     }
    .section{
        margin-top: 10px;
    }
    .info{
        color: #f0f;
        font-size: 14px;
    }
    .bg{
        background: #ff6700;
    }
    .fw{
        font-weight: 700;
    }
</style>
<body>
<div id="container">
    <canvas id="canvas" width="1200" height="800">浏览器不支持canvas<!-- 如果不支持会显示这段文字 --></canvas>
    <div class="section">
        <span class="info">选择画笔颜色:</span>
        <button class="btn colorBtn fw" style="background-color:yellow;" onclick='setPenColor("yellow");'>YELLOW</button>
        <button class="btn colorBtn" style="background-color:red;" onclick='setPenColor("red");'>RED</button>
        <button class="btn colorBtn" style="background-color:blue;" onclick='setPenColor("blue");'>BLUE</button>
        <button class="btn colorBtn" style="background-color:green;" onclick='setPenColor("green");'>GREEN</button>
        <button class="btn colorBtn" style="background-color:black;color:#fff" onclick='setPenColor("black");'>BLACK</button>
    </div>
    <div class="section">
        <span class="info">选择橡皮擦:</span>
        <button class="btn colorBtn" style="background-color:white;" onclick='setPenColor("white");'>WHITE</button>
    </div>
    <div class="section">
        <span class="info">选择画笔大小:</span>
        <button class="btn bg penBtn fw" onclick="setPenWidth(4);">4PX</button>
        <button class="btn bg penBtn" onclick="setPenWidth(8);">8PX</button>
        <button class="btn bg penBtn" onclick="setPenWidth(16);">16PX</button>
    </div>
    <div class="section">
        <span class="info">输出画板内容到下面的图片:</span>
        <button class="btn" onclick="createImage();">EXPORT</button>
    </div>
    <img id="image_png">
</div>
</body>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<script type="text/javascript">
    var canvas = document.getElementById('canvas'); //获取canvas标签
    var ctx = canvas.getContext("2d");//创建 context 对象
    ctx.fillStyle = "#ff7777";//画布背景色
    ctx.fillRect(0,0,1200,800);//在画布上绘制 1200x300 的矩形,从左上角开始 (0,0)
    var penClick = false; //画笔按下标记
    var startAxisX = 0;
    var startAxisY = 0;
    var penColor = "yellow";//画笔颜色
    var penWidth = 4;//画笔粗细
    //画笔颜色选中状态
    $(".colorBtn").on("click", function(event){
        $(".colorBtn").removeClass('fw')
        $(this).addClass('fw')
    });
    //画笔粗细选中状态
    $(".penBtn").on("click", function(event){
        $(this).addClass('fw').siblings().removeClass('fw')
    });
    //设置画笔颜色
    function setPenColor(color){
        penColor = color;
    }
    //设置画笔粗细
    function setPenWidth(type){
        penWidth = type
    }
    canvas.addEventListener("mousemove",drawing,true); //鼠标移动事件
    canvas.addEventListener("mousedown",penDown,false); //鼠标按下事件
    canvas.addEventListener("mouseup",penUp,false); //鼠标弹起事件
    function penDown(event){
        penClick = true;
        startAxisX = event.pageX;
        startAxisY = event.pageY;
    }
    function penUp(){
        penClick = false;
    }
    function drawing(event){
        if(!penClick)
                return;
        var stopAxisX = event.pageX;
        var stopAxisY = event.pageY;
        ctx.beginPath();
        //由于整体设置了水平居中,因此需要做特殊处理:window.screen.availWidth/2 -300
        ctx.moveTo(startAxisX-(window.screen.availWidth/2 -600),startAxisY);//moveTo(x,y) 定义线条开始坐标
        ctx.lineTo(stopAxisX-(window.screen.availWidth/2 -600),stopAxisY);//lineTo(x,y) 定义线条结束坐标
        ctx.strokeStyle = penColor;
        ctx.lineWidth = penWidth;
        ctx.lineCap = "round";
        ctx.stroke();// stroke() 方法来绘制线条
        startAxisX = stopAxisX;
        startAxisY = stopAxisY;
    }
    function createImage() {
        var img_png_src = canvas.toDataURL("image/png"); //将画板保存为图片格式的函数
        console.log('=====',img_png_src);//data:image/png;base64,iVBOR.....
        document.getElementById("image_png").src = img_png_src;
    }
</script>
</html>

一、签名要简洁
简洁,简单,这是我比较推崇的一种签名样式。
如果你连自己都看不懂、或者说根本就说不出自己要写什么,又怎么可能写出好看的签名呢?
所以如果你要想好,就要把自己看懂和理解清楚后,再去写。
(你在画画时会注意这些吗?)
注意这个“写”字,我们说一个字有两种写法时最好的。
一个字有四种写法时,就不要一次写三个或四个。
二、签名的整体
一般签名的整体看起来会比较圆润,
而不是像书法那样,
或者说它的字很大,
而看起来显得很粗糙。
画签名的时候也要注意整体的风格,
要考虑到它是否适合签名。
三、签名中用笔
在签名中,签字笔起着很重要的作用。
(1)起笔落笔:签名主要就是把签名者在纸上的名字写下来,所以我们要有书写的感觉。
(2)起落笔:签完名之后就要进行最后一步落笔了,落笔一般都是先轻后重然后再轻到重。
(3)用墨:签名是书法艺术,用墨时需要做到三点:
1.颜色要有变化,如用淡墨可以表现出浓淡来。
2.用水要有变化,可以表现出水的流动、水的速度、笔力等,这样可以使签名更有生气。
3.颜色要自然,要协调。
四、签名中的笔形
签名的笔画,大致分为两种:
1、直笔:一种是很简单的横画,也叫细横,像柳体签名一样;
2、圆笔:一种是很圆的曲线画,也叫扁笔。
签名就像是在白纸上写字。
写字时都要横平竖直,所以我们平时写字就叫“横平竖直”。
签名也是一样,起笔落笔都有笔形和基本笔画的区别。
签名笔形很重要,它是我们签名者对自己作品和文字整体感觉的重要体现之一。
五、签名中的笔画与笔势
签名中的笔画要做到起笔要重,落笔要轻;
签名的笔势要稳,笔画才能有生机。
签名与写字不同,它不是靠一次写完,而是可以多次重复。
所以在签名中不能把每一次签完的笔都收起来,而是可以重复使用几种笔势。
这样才能让人感到有变化,也会给人留下深刻的印象。
这就是为什么签完之后还要再次签名的原因所在。
六、签名的行笔与收笔,用墨要有浓淡层次与提按节奏。
一个好的签名,可以起到点缀美化作用,但最重要的是它的实用价值。
一件好的签名作品,要有实用价值,就必须以其书法之美来衬托其艺术之美。
好签名是书法与签章有机结合的结晶。
但从另一方面讲,如果一个签字不具备艺术价值,就是败笔。
所以看一个签名是否具备观赏性并不取决于它本身,而是取决于它是否具备实用性。
签名与书体本身相比有着自己独特的魅力和内涵,因此作为一个成功书法大家的签名作品,都会具备一些共性特点。
如果能对其加以挖掘和利用,将会大大提高签名作品在艺术上的欣赏价值与社会认同价值。
七、不同的字体结构,其笔画用墨和行笔也不一样。
如:
“中”、“日”这三个字,其笔画结构都是左低右高。
如:
“中-日-金”这几个字的结构和行笔是相反的,都是左低右高,就像人一样,左边低右边高。
再比如:
“王”字的笔画和行笔都是上粗下细;而“王”字的左右两边则比较细,而中间则比较粗。所以如果在画签名时不注意看,就很容易把字写歪了。

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

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

相关文章

JVM学习(一):简单聊聊性能调优这门艺术

一、性能调优背景说明1.1 生产环境中的问题生产环境发生了内存溢出该如何处理&#xff1f;生产环境应该给服务器分配多少内存合适&#xff1f;如何对垃圾回收器的性能进行调优&#xff1f;生产环境CPU负载飙高该如何处理&#xff1f;生产环境应该给应用分配多少线程合适&#x…

2-2进程管理-处理机调度

文章目录一.调度的层次二.进程调度的时机、切换与过程、调度方式三.调度器、闲逛进程四.调度算法的评价指标五.调度算法&#xff08;一&#xff09;先来先服务SCFS&#xff08;二&#xff09;短作业优先算法SJF&#xff08;三&#xff09;高响应比优先HRRN&#xff08;四&#…

cas6.6关于redis连接问题的一次记录,主要问题 1远程主机强迫关闭了一个现有的连接,主要问题2ERR unknown command `HELLO`

项目背景&#xff1a; 公司要求用cas单点登录&#xff0c;这个cas需要引入redis当做ticket缓存&#xff0c;但是出现连接不上的问题由于用redismanager可视化软件看了是可以连接的&#xff0c;进行了查询是redis配置文件中需要配置参数问题截图如下 问题输出如下 2023-01-04…

192:vue+openlayers: 选择feature,弹窗操作,删除所选feature

第192个 点击查看专栏目录 本示例的目的是介绍如何在vue+openlayer中使用select来选择feature元素,选择的过程中弹窗出现删除和关闭按钮,删除的内容是selected的feature,关闭的是功能浮窗。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果; 注意如果Ope…

《设计模式》模板方法模式

《设计模式》模板方法模式定义&#xff1a; 模板方法模式又叫模板模式&#xff0c;在一个抽象类中公开定义了执行它的方法的模板&#xff0c;子类可以根据需要重写方法实现&#xff0c;但是调用将按照抽象类中定义的方式进行。模板方法模式相当于定义了一个操作中算法的骨架&a…

回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入多输出

回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入多输出 目录回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入多输出预测效果基本介绍程序设计往期精彩参考资料预测效果 基本介绍 MATLAB实现CNN-GRU卷积门控循环单元多输入多输出&#xff0c;运行环境Matlab2020及以上…

【国科大模式识别】第三次作业

【题目一】现有四个来自于两个类别的二维空间中的样本, 其中第一类的两个样本为 (1,4)T(1,4)^T(1,4)T 和 (2,3)T(2,3)^T(2,3)T, 第二类的两个样本为 (4,1)T(4,1)^T(4,1)T 和 (3,2)T(3,2)^T(3,2)T 。这里, 上标 TTT 表示向量转置。若采用规范化增广样本表示形式, 并假设初始的权…

权限问题的理解——Linux

这里是目录标题一、重定向二、 学Linux的意义三、shell命令的运行原理四、Linux权限管理1.Linux中具体用户的分类五、Linux文件相关的权限概念文件类型文件的权限文件的权限操作去掉权限加上权限八进制文件权限操作更改文件的拥有者和所属组六、目录的权限七、默认权限权限掩码…

树莓派项目归档

Flask Flask登录注册界面美化 Flask 修改路由 Flask 创建404json返回 返回虚拟温湿度 Flask-移植开发环境到VSCode-手机局域网访问测试 Flask AJAX 获取数据 Flask 将项目从win部署到树莓派 添加监控窗口 Flask 编写shell脚本快速启动服务 树莓派 树莓派4B Ubuntu MAT…

leetcode螺旋矩阵总结

螺旋矩阵题目&#xff1a; leetcode54&#xff0c;59&#xff0c;885&#xff0c;2326 leetcode54 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5] 输入&#xff1a;matrix [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 输出&#xff1a;[…

MSTP技术中引入的必要性

目前&#xff0c;城域光传送网大量存在的是传统的SONET/SDH环网和简单的MSTP网络&#xff0c;对带宽的指配基本上是静态的&#xff0c;无法适应大量的突发性数据业务&#xff0c;需要大量的人工操作和维护&#xff0c;耗时耗力、容易出错。为了改变现状&#xff0c;人们不断在传…

第二章 Flink 环境部署

Flink 系列教程传送门 第一章 Flink 简介 第二章 Flink 环境部署 第三章 Flink DataStream API 第四章 Flink 窗口和水位线 第五章 Flink Table API&SQL 第六章 新闻热搜实时分析系统 一、Flink架构 Flink 是一个分布式系统&#xff0c;需要有效分配和管理计算资源…

python-turtle画图

认识TurtleTurtle是一个渲染器基于底层图形编程结构(API)构建&#xff0c;主要用于场景的构建以及3D物体的绘制(3D游戏、虚拟场景等)Turtle是一个窗体程序Turtle是Python语言中的一个很流行的绘制图像的函数库&#xff0c;想象一个小海龟在一个横轴为x&#xff0c;纵轴为y的坐标…

时序数据库 TDengine 携手北京科技大学设计研究院,助力冶金工业智慧化

北京科技大学设计研究院有限公司作为北京科技大学全资产业化技术推广机构&#xff0c;从 2013 年开始在冶金、钢铁行业进行业务系统开发和实施&#xff0c;围绕先进材料、绿色低碳和智能制造不断深耕细作&#xff0c;持续创新。其拥有高效轧制与智能制造国家工程研究中心、国家…

DPDK工作原理和环境搭建

DPDK工作原理DPDK环境搭建编译DPDKDPDK工作原理DPDK实践之处理UDP数据总结DPDK环境搭建 工具准备&#xff1a;VMware、ubuntu16.04。 &#xff08;1&#xff09;VMware添加两个网卡。桥接网卡作为 DPDK 运行的网卡&#xff0c;NAT 网卡作为 ssh 连接的网卡。 &#xff08;2&…

后台交互—springboot+mybatis整合小程序(源码演示)

后台准备pom.xml<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM…

【案例实战】SpringBoot整合GRPC微服务远程通信

1.什么是GRPC GRPC是RPC框架中的一种&#xff0c;是一个高性能&#xff0c;开源和通用的RPC框架&#xff0c;基于Protobuf序列化协议开发&#xff0c;且支持众多开发语言。 面向服务端和协议端&#xff0c;基于http/2设计&#xff0c;带来诸如双向流&#xff0c;流控&#xff…

足球视频AI(三)——YOLOV7目标检测自训练模型

一、基础概念 YoloV7提供的yolov7-tiny.onnx 对于图像中包含较大尺寸的足球检测准确率高。 但在实际应用中&#xff0c;足球视频中的足球非常小&#xff0c;默认的模型难于满足实际的足球检测需求。 1.1 识别目标 1&#xff09;固定机位的视频中足球的逐帧识别 1.2 实现思…

邮箱2023系统

邮箱2023系统 前言 VMMail作为一款开源的邮件系统&#xff0c;目前已经发布到了10.0版本。 该版本在 GitHub上是免费的&#xff0c;且代码也是开源的&#xff0c;所以该程序不会对 GitHub上的所有用户造成任何影响。 由于 VMMail开发时采用了开源代码&#xff0c;并在 GitHub上…

区块链之bolt数据库持久化与基本功能完善

文章目录bolt数据库安装使用bolt进行持久化存储bolt持久化的基本步骤创世区块的持久化新增区块的持久化完善区块链基本功能创世区块创建增加区块遍历区块链链接&#xff1a; 区块链项目github地址项目目前进度&#xff1a;bolt数据库安装 bolt数据库介绍&#xff1a; bolt数据…