首页 > 其他分享 >canvas绘制文本

canvas绘制文本

时间:2024-11-17 12:14:38浏览次数:3  
标签:canvas document const value getElementById 文本 绘制 demoConfig size

练习一下canvas对文本的基本应用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div>
        <label for="name">
            文字:
            <input type="text" id="name" value="默认文字默认文字默认文字">
        </label>
    </div>
    <div>
        <label for="size">
            文字大小:
            <input type="number" id="size" value="50">
        </label>
    </div>
    <div>
        <label for="font">
            文字字体:
            <select name="font" id="font">
                <option value="楷体" selected>楷体</option>
                <option value="黑体">黑体</option>
                <option value="宋体">宋体</option>
            </select>
        </label>
    </div>
    <div>
        <label for="fontColor">
            文字颜色:
            <input type="color" id="fontColor">
        </label>
    </div>
    <div>
        <label for="rimColor">
            边框颜色:
            <input type="color" id="rimColor" value="#ff0000">
        </label>
    </div>
    <div>
        文字类型:
        <label>
            <input type="radio" name="fontType" value="1" checked> 边框与文字
        </label>
        <label>
            <input type="radio" name="fontType" value="2"> 仅边框
        </label>
        <label>
            <input type="radio" name="fontType" value="3"> 仅文字
        </label>
    </div>
    <div>
        设置文字渐变:
        <label>
            <input type="radio" name="gType" value="1" checked> 是
        </label>
        <label>
            <input type="radio" name="gType" value="2"> 否
        </label>
    </div>
    <div>
        <label for="fontColor">
            文字渐变色2:
            <input type="color" id="fontColor2" value="#ff0000">
        </label>
    </div>
    <div>
        <label for="fontColor">
            文字渐变色3:
            <input type="color" id="fontColor3" value="#5bba18">
        </label>
    </div>
    <div>
        设置文字阴影:
        <label>
            <input type="radio" name="shadowType" value="1" checked> 是
        </label>
        <label>
            <input type="radio" name="shadowType" value="2"> 否
        </label>
    </div>
    <div>
        <label for="fontColor">
            阴影颜色:
            <input type="color" id="shadowColor" value="#eabc06">
        </label>
    </div>
    <div>
        <label for="size">
            阴影模糊范围:
            <input type="number" id="shadowRange" value="20">
        </label>
    </div>
    <div>
        <input type="button" id="button" value="生成文字">
    </div>

    <canvas id="demo" width="1200" height="600" style="background: white"></canvas>
    <script type="text/javascript">
        const demo = document.getElementById("demo");
        // 绘制平面图形
        const demoConfig = demo.getContext("2d");
        const button = document.getElementById("button");
        button.addEventListener('click', function () {
            demoConfig.clearRect(0, 0, 1200, 600);
            const name = document.getElementById("name").value;
            const size = document.getElementById("size").value;
            const font = document.getElementById("font").value;
            const fontColor = document.getElementById("fontColor").value;
            const rimColor = document.getElementById("rimColor").value;
            const fontType = document.querySelector('input[name="fontType"]:checked').value;
            const gType = document.querySelector('input[name="gType"]:checked').value;
            const shadowType = document.querySelector('input[name="shadowType"]:checked').value;
            demoConfig.font = size + "px " + font;// 设置文字大小与字体
            demoConfig.strokeStyle = rimColor;// 设置边框颜色
            if (gType === '1'){
                const fontColor2 = document.getElementById("fontColor2").value;
                const fontColor3 = document.getElementById("fontColor3").value;
                const g1 = demoConfig.createLinearGradient(0, size, name.length*size/2, size);
                g1.addColorStop(0, fontColor);
                g1.addColorStop(0.5, fontColor2);
                g1.addColorStop(1, fontColor3);
                demoConfig.fillStyle = g1;// 设置字体渐变
            }else {
                demoConfig.fillStyle = fontColor;// 设置字体颜色
            }
            if (shadowType === '1'){
                const shadowColor = document.getElementById("shadowColor").value;
                const shadowRange = document.getElementById("shadowRange").value;
                demoConfig.shadowColor = shadowColor;
                demoConfig.shadowBlur = shadowRange;
            }
            if (fontType === '1' || fontType === '2'){
                demoConfig.strokeText(name, 0, size);
            }
            if (fontType === '1' || fontType === '3'){
                demoConfig.fillText(name, 0, size);
            }
        })
    </script>
</body>
</html>

标签:canvas,document,const,value,getElementById,文本,绘制,demoConfig,size
From: https://blog.csdn.net/zkxiaoxiangzhu/article/details/143830336

相关文章

  • python岭迹图绘制函数
    一.岭迹图是什么?    岭迹图(RidgeTracePlot)是一种可视化工具,用于展示岭回归中正则化参数($\alpha$)对回归系数的影响。它能帮助我们理解特征的稳定性和正则化在控制模型复杂度中的作用。二.什么时候需要看岭迹图?存在共线性特征时当特征间高度相关,普通最小二乘法(OLS)......
  • AIGC中的文本风格迁移:基于深度学习的实现
    引言文本风格迁移是自然语言处理领域的一个重要研究方向,它可以将文本从一种风格转换为另一种风格,同时保留其原有的内容。随着深度学习技术的发展,文本风格迁移的方法变得越来越先进和高效。本文将探讨基于序列到序列模型(Seq2Seq)的文本风格迁移技术,并提供基于PyTorch的代码示例......
  • OpenAI模型whisper 音频转文本
    最近有一个音频转文本的需求,了解到了OpenAI的whisper模型可以实现。Whisper是OpenAI提供的一个通用语音识别模型,支持多语言的音频转文本功能,并具有较高的准确性。它的主要用途包括自动语音识别 (ASR)、语言翻译(将音频直接翻译成英文文本)等。Whisper支持将长时间音频文件(......
  • 磁场的绘制
    详见如下python代码 importmatplotlib.pyplotaspltimportnumpyasnp#定义常量mu_0=4*np.pi*1e-7#真空的磁导率(Tm/A)#定义磁偶极子类classMagneticDipole:def__init__(self,magnetic_moment,position):self.magnetic_moment=np......
  • 电场的绘制
    详见python小程序 importnumpyasnpimportmatplotlib.pyplotasplt#定义常量k=8.99e9#库仑常数(Nm^2/C^2)#定义电荷类classPointCharge:def__init__(self,charge,position):self.charge=chargeself.position=np.array(po......
  • java操作pdf文本域填充内容
    引入jar包<dependencies><dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.2.5</version><type>pom&......
  • 合并具有文本框的Word文档:VBA代码批量操作
      本文介绍基于VBA语言,对大量含有图片、文本框与表格的Word文档加以批量自动合并,并在每一次合并时添加分页符的方法。  在我们之前的文章中,介绍过基于Python语言的python-docx(docx)模块与docxcompose模块,对大量Word文档加以合并的方法;但是,基于这种方法,我们无法对具有非明确大......
  • 小程序21-绘制轮播图
    在小程序中,提供了swiper和swiper-item组件实现轮播图swiper:滑块视图容器,其中只能放置swiper-item组件swiper-item:只可放置在swiper组件中,宽高自动设置为100%,代表swiper中的每一项文档所在位置:wswiper文档链接swiper常用属性autoplay:是否自动切换circular:是......
  • RealCustom:缩小真实文本词的范围,实现实时开放域文本到图像的定制
    RealCustom:缩小真实文本词的范围,实现实时开放域文本到图像的定制文本到图像定制旨在为给定的主题合成文本驱动的图像,最近彻底改变了内容创作。现有的作品遵循伪词范式,即将给定的主题表示为伪词,然后将其与给定的文本组合在一起。然而,伪词与给定文本固有的纠缠扩散范围导致了双重......
  • 绘制层次结构图
    绘制层次结构图WPS的智能图形要收费,先做个免费的不美观的版本。基于matplotlib,networkx,graphviz,pydot按需修改输入内容input_data为输入的文本。外观rankdir为指定方向。mpatches.Rectangle为节点外形。比例缩放matplotlib窗口,调整节点长宽。调整字体大小,当前为pl......