首页 > 其他分享 >使用canvas制作一个印章

使用canvas制作一个印章

时间:2024-12-04 09:32:49浏览次数:2  
标签:canvas const 制作 ctx 印章 radius 绘制

<!DOCTYPE html>
<html>
<head>
<title>Canvas 印章</title>
<style>
body {
  font-family: sans-serif;
}
#canvas {
  border: 1px solid #ccc;
}
</style>
</head>
<body>

<h1>Canvas 印章</h1>

<canvas id="canvas" width="300" height="300"></canvas>

<script>
  const canvas = document.getElementById('canvas');
  const ctx = canvas.getContext('2d');

  // 印章文字
  const text = '示例印章';

  // 印章颜色
  const sealColor = 'red';

  // 绘制圆形
  const centerX = canvas.width / 2;
  const centerY = canvas.height / 2;
  const radius = canvas.width / 2 * 0.8; // 半径略小于 canvas 一半

  ctx.beginPath();
  ctx.arc(centerX, centerY, radius, 0, 2 * Math.PI);
  ctx.fillStyle = 'transparent'; // 圆圈内部透明
  ctx.strokeStyle = sealColor;
  ctx.lineWidth = 5;
  ctx.stroke();

  // 绘制文字
  ctx.font = 'bold 24px sans-serif'; // 文字大小和字体
  ctx.textAlign = 'center';
  ctx.textBaseline = 'middle';
  ctx.fillStyle = sealColor;
  ctx.fillText(text, centerX, centerY);


  // 绘制五角星 (可选)
  function drawStar(ctx, x, y, radius, color) {
    ctx.save();
    ctx.beginPath();
    ctx.translate(x, y);
    ctx.moveTo(0, -radius);
    for (let i = 0; i < 5; i++) {
      ctx.rotate(Math.PI / 5 * 2);
      ctx.lineTo(0, -radius * 0.5);
      ctx.rotate(Math.PI / 5 * 2);
      ctx.lineTo(0, -radius);
    }
    ctx.fillStyle = color;
    ctx.fill();
    ctx.restore();
  }

  //  在印章中央绘制五角星
  drawStar(ctx, centerX, centerY, radius * 0.2, sealColor);



</script>

</body>
</html>

代码解释:

  1. 获取 Canvas 和上下文: 获取 canvas 元素和 2D 绘图上下文。
  2. 设置样式: 设置印章文字、颜色、圆形半径等。
  3. 绘制圆形: 使用 arc() 方法绘制圆形,设置填充颜色为透明,边框颜色为 sealColor,边框宽度为 5。
  4. 绘制文字: 设置字体、对齐方式、基线和填充颜色,然后使用 fillText() 方法绘制文字。
  5. 绘制五角星 (可选): drawStar 函数绘制一个五角星。可以修改或移除这部分代码。

关键改进和说明:

  • 透明背景: 将圆形填充设置为透明 (fillStyle = 'transparent'),这样印章背景就不会遮挡页面内容。
  • 可自定义: 可以轻松修改 textsealColor 等变量来自定义印章。
  • 五角星 (可选): 添加了绘制五角星的函数,使印章更具样式。可以根据需要调整大小和颜色,或者移除这部分代码。
  • 尺寸控制: 使用 canvas.width / 2 * 0.8 控制圆形半径,使其略小于 canvas 一半,避免文字或图案超出边界。

使用方法:

将代码保存为 HTML 文件,然后在浏览器中打开即可看到印章效果。

进一步扩展:

  • 添加图片: 可以使用 drawImage() 方法在印章中添加图片。
  • 更复杂的图形: 可以使用更复杂的路径绘制方法创建更精细的印章图案。
  • 用户交互: 可以添加用户交互功能,例如允许用户输入文字、更改颜色等。
  • 保存为图片: 可以使用 canvas.toDataURL() 方法将 canvas 内容保存为图片。

希望这个改进后的代码能够更好地帮助你创建印章!

标签:canvas,const,制作,ctx,印章,radius,绘制
From: https://www.cnblogs.com/ai888/p/18585570

相关文章

  • HTML5+CSS3+JS制作响应式旅游网站(源码含7个页面)
    一、网站描述主要使用HTML5+CSS3+JS技术,进行制作响应式旅游网站,该网站包含7个静态页面,分别是目的地、旅游攻略、特色行程、酒店预订、联系我们、注册页面、登录页面。其中,该旅游网站的官网首页,包含吸引眼球的主要横幅、导航菜单、推荐景点栏以及用户评价部分。页面整体以直观......
  • Cocos creator制作透明背景桌面宠物
    Cocoscreator制作透明背景桌面宠物目录Cocoscreator制作透明背景桌面宠物来源前言验证可使用版本打包方案实现1、electron-js中main.js设置2、Cocoscreator中宏配置3、Cocoscreator中Canvas设置4、Cocoscreator构建Web移动端5、修改Web移动端style.css6、使用electron-js打......
  • 如何在C语言中制作一个计算器
    喜大普奔啊,100粉丝了,上次说的计算器来喽^V^主播一点没鸽(哇,这也太高产了吧),感谢大家的陪伴立一个flag,1000粉丝的时候制作一个图画送给大家^V^正文:简易计算机要求1、打印欢迎界面。2、提醒用户输入参与运算的两个数字,以及运算符号,根据运算符号输出结果。3、询问用户是否继......
  • 火了!AI美女31条视频涨粉5万,2分钟教你制作出一条作品
    今天给大家分享的是色粉变现项目在网创圈里面,色粉变现项目的热度一直都是居高不下虽然各大平台一直都在打压,但就是死不掉,到现在依然靠它来发财说到底还是人性,男的好色,女的爱美各大平台,但凡内容带擦边女色,流量都不低从最开始的真人跳擦边舞蹈,到黑丝美女,到现在的AI美女玩......
  • 下载 WordCloudStudio,一键制作美观词云!
    轻松创建令人惊叹的词云图,适合多个场景应用!无论您是教育者、数据分析师,还是营销达人,WordCloudStudio都能满足您的需求,让您的创意触手可及!功能亮点• AI定制模板:输入需求,AI智能生成专属模板。• 海量模板库:超过11000个高质量模板供您选择,且数量持续更新中。• 动态Gif/视频......
  • 305.大学生HTML5期末大作业 —【摩尔庄园小游戏主题网页】 Web前端网页制作 html5+css
    目录一、更多推荐二、网页简介三、网页文件四、网页效果五、代码展示1.html2.CSS3.JS六、总结1.简洁实用2.使用方便3.整体性好4.形象突出5.交互式强一、更多推荐欢迎来到我的CSDN主页!您的支持是我创作的动力!Web前端网页制作、网页完整代码、大学生期末大作......
  • web前端期末大作业:基于HTML+CSS+JavaScript制作我的音乐网站(带设计报告)
    ......
  • web期末大作业:基于html+css+js制作深圳大学网站(13页) 学校班级网页制作模板 学生静态
    ......
  • HTML+CSS+JavaScript网页设计与制作实例 -Apple商城网页(6个页面)
    一、网站描述基于HTML、CSS和JavaScript等技术的综合应用,实现对Apple商城的仿写。该网站包含八个静态页面,分别是落地页、首页、简介、新闻、产品中心等。二、网页作品技术   HTML:用于构建网页的结构和内容,通过标签和属性来定义页面的各个部分。   CSS:用于美化......
  • 如何用AI制作3D模型?
    Meshy是一款3DAIGC工具,借助Meshy我们可以在一分钟内将文字和图片转化为高质量的3D模型。 Meshy的三种使用模式:文字生成3D、图像生成3D、文本生成贴图。本文将通过"Textto3D"来讲解如何用AI生成3D模型。在本指南中,我们演示了如何使用Meshy创建3D模型。这种创新工具可以将文本......