Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用HTML5画布创建软笔触边缘

如何使用HTML5画布创建软笔触边缘
EN

Stack Overflow用户
提问于 2012-01-25 21:50:43
回答 4查看 5.5K关注 0票数 7

我正在使用HTML5 canvas创建一个绘图应用程序。

https://github.com/homanchou/sketchyPad

我可以使用rgba来控制我的线条笔触的不透明度,但是我如何实现一个柔和的羽毛笔刷边缘与一个坚硬的圆形边缘呢?

EN

回答 4

Stack Overflow用户

发布于 2012-01-31 17:51:02

三种可能的解决方案:

  1. 您可以将线条写入屏幕外的画布,应用模糊过滤器,然后将结果绘制到可见的画布中。
  2. 如果只使用直线段,则可以对每个线段使用线性渐变。与线段的方向相比,渐变的方向必须为90“角。
  3. 在同一位置多次绘制相同的线条。首先使用全宽和较小的alpha。然后减小宽度并增加alpha。

对每个线段使用线性渐变的示例:

http://jsfiddle.net/chdh/MmYAt/

代码语言:javascript
运行
AI代码解释
复制
function drawSoftLine(x1, y1, x2, y2, lineWidth, r, g, b, a) {
   var lx = x2 - x1;
   var ly = y2 - y1;
   var lineLength = Math.sqrt(lx*lx + ly*ly);
   var wy = lx / lineLength * lineWidth;
   var wx = ly / lineLength * lineWidth;
   var gradient = ctx.createLinearGradient(x1-wx/2, y1+wy/2, x1+wx/2, y1-wy/2);
      // The gradient must be defined accross the line, 90° turned compared
      // to the line direction.
   gradient.addColorStop(0,    "rgba("+r+","+g+","+b+",0)");
   gradient.addColorStop(0.43, "rgba("+r+","+g+","+b+","+a+")");
   gradient.addColorStop(0.57, "rgba("+r+","+g+","+b+","+a+")");
   gradient.addColorStop(1,    "rgba("+r+","+g+","+b+",0)");
   ctx.save();
   ctx.beginPath();
   ctx.lineWidth = lineWidth;
   ctx.strokeStyle = gradient;
   ctx.moveTo(x1, y1);
   ctx.lineTo(x2, y2);
   ctx.stroke();
   ctx.restore(); }

通过减小宽度和增加alpha多次绘制一条线的示例:

http://jsfiddle.net/chdh/RmtxL/

代码语言:javascript
运行
AI代码解释
复制
function drawSoftLine(x1, y1, x2, y2, lineWidth, r, g, b, a) {
   ctx.save();
   var widths = [1   , 0.8 , 0.6 , 0.4 , 0.2  ];
   var alphas = [0.2 , 0.4 , 0.6 , 0.8 , 1    ];
   var previousAlpha = 0;
   for (var pass = 0; pass < widths.length; pass++) {
      ctx.beginPath();
      ctx.lineWidth = lineWidth * widths[pass];
      var alpha = a * alphas[pass];
      // Formula: (1 - alpha) = (1 - deltaAlpha) * (1 - previousAlpha)
      var deltaAlpha = 1 - (1 - alpha) / (1 - previousAlpha)
      ctx.strokeStyle = "rgba(" + r + "," + g + "," + b + "," + deltaAlpha + ")";
      ctx.moveTo(x1, y1);
      ctx.lineTo(x2, y2);
      ctx.stroke();
      previousAlpha = alpha; }
   ctx.restore(); }
票数 7
EN

Stack Overflow用户

发布于 2012-01-25 21:57:12

我敢肯定这取决于你使用的浏览器。上次我检查过了(不久前--可能已经改变了)火狐和Chrome不能消除边缘锯齿,而IE9可以。

票数 1
EN

Stack Overflow用户

发布于 2016-03-09 09:12:34

您可以使用css过滤器来模糊画布。使用SVG rasterization trick可以做到这一点。下面是你如何做到这一点:

  1. 制作两个画布,一个在另一个画布上。其中一个称为«Target»,另一个称为«Buffer»。Buffer是你在上面画的,Target是画布的结果。
  2. css-filter: blur(px)应用到Buffer画布上,这样用户可以立即看到模糊的预览。
  3. 这是有趣的部分。在每个笔划上(即鼠标向上),光栅化缓冲区画布,将图像放入<svg><foreignObject></foreignObject></svg>,应用相同的CSS过滤器,光栅化SVG,并将光栅化的SVG放在目标画布上。这是gist with code example.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9010835

复制
相关文章
GIMP 教程:如何在 GIMP 中创建曲线文本
当你在 GIMP 中制作一个徽章、海报或其它任何作品时,你需要扭曲或弯曲一些文本。多功能的 GIMP 工具提供了一些创建弯曲文本的方法。取决于你将如何使用它和你想给予文本的弧度,有一些适合不同情况的方法。
用户8639654
2021/09/14
2.3K0
字体问题
public class DrawLine extends JFrame{
明明如月学长
2021/08/27
5870
gimp教程:gimp界面介绍「建议收藏」
大家好,又见面了,我是你们的朋友全栈君。 GIMP(跨平台图像处理程序)是一个开发源代码的光栅与图像编辑的先进功能,关于GIMP的界面,初学者都了解吗?下面是小编整理的关于gimp教程中gimp界面介
全栈程序员站长
2022/07/02
8080
gimp教程:gimp界面介绍「建议收藏」
如何优雅解决若依二级菜单名字过长问题:若依(RuoYi)菜单字体大小,菜单长度修改攻略
在使用若依框架过程中,经常遇到菜单名称太长导致显示不全的问题。本文详细介绍两种有效的解决策略,包括如何增加菜单列宽和使用文本框动态显示标签名称。本文适合对前端布局优化感兴趣的开发者,无论是初学者还是经验丰富的大佬。掌握这些技巧后,你将能够优化菜单展示,提升用户体验。关键词:若依框架、菜单展示优化、前端开发、界面布局、CSS。
猫头虎
2024/04/08
1.6K0
如何优雅解决若依二级菜单名字过长问题:若依(RuoYi)菜单字体大小,菜单长度修改攻略
GIMP 教程:如何使用 GIMP 裁剪图像 | Linux 中国
你可能想在 GIMP 中裁剪图像的原因有很多。例如,你可能希望删除无用的边框或信息来改善图像,或者你可能希望最终图像的焦点是在一个特定细节上。
用户1880875
2021/10/11
5.2K0
app字体随系统字体变化问题
app字体不需要随系统字体的大小来改变,可以在activity基类加入下面代码: @Override public Resources getResources() { Resources res = super.getResources(); Configuration config = new Configuration(); config.setToDefaults(); res.updateConfiguration(config,re
用户3004328
2018/09/06
2.5K0
WordPress为导航菜单添加个性图标字体
目前图标字体非常流行,图标字体使用简单,与图片格式的小图标相比,支持视网膜显示,可以无限放大。特别是一些响应式设计的主题模板,都会或多或少使用图标字体。我们还可以单独为导航菜单上的项目也配上个性化的图标字体。
爱游博客
2019/08/07
2K0
WordPress为导航菜单添加个性图标字体
展望GIMP 3.0:非破坏性编辑,正确的CMYK
我记不清从什么时候开始使用GIMP了。对于那些不知道的人来说,GIMP代表GNU图像处理项目,它是Photoshop的开源替代品。
云云众生s
2025/01/03
1650
展望GIMP 3.0:非破坏性编辑,正确的CMYK
gimp中文版教程_GIMP中文教程.pdf
路径(B),油漆桶填充(shift+B),混合填充(L),移动(M),滤镜–>高斯模糊
全栈程序员站长
2022/09/13
2.3K0
Ghostscript 字体处理深究: 解决字体缺失问题
欢迎各位前来猫头虎的技术小栈!今天我们将深入探讨 Ghostscript 在处理 PDF 转换时遇到的常见问题——字体缺失。在数字文档处理领域,Ghostscript 是一个不可或缺的工具,尤其在 PDF 文档的渲染和转换中。然而,字体缺失问题可能会成为许多开发者的难题。通过本文,你将了解到 Ghostscript 如何处理字体,以及如何解决字体缺失问题,保证文档的正确渲染。记得收藏和分享哦!
猫头虎
2024/04/09
3810
【Bootstrap】011-组件:Glyphicons 字体图标、下拉菜单
见https://v3.bootcss.com/components/#glyphicons
訾博ZiBo
2025/01/06
1370
【Bootstrap】011-组件:Glyphicons 字体图标、下拉菜单
Gimp快捷键
Gimp 的所有快捷键可以通过点击 「Edit」->「Keyboard Shortcuts」调出。
hotarugali
2022/03/18
8580
Gimp快捷键
gimp中文版教程_GIMP中详细教程.pdf「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/124836.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/03
4K0
PDF字体乱码问题分析
最近身体有恙,于是就想起来整理下这几年体检的电子报告汇总看看。结果发现在善诊平台下载的体检报告在电脑上看直接乱码了。不过这种字符集的问题怎么能难得了本码农呢,所以就尝试起各种办法进行恢复,结果发现这果然是个深坑。。。
mythsman
2022/11/14
3.1K0
PDF字体乱码问题分析
elementUI字体文件丢失问题
https://unpkg.com/browse/element-ui@2.15.6/lib/theme-chalk/fonts/
阿超
2022/08/17
1.8K0
elementUI字体文件丢失问题
把你的 GIMP 变成 PhotoShop
GIMP( GNU 图像处理程序(GNU Image Manipulation Program))是一个一流的开源自由的图像处理程序。加州大学伯克利分校的 Peter Mattis 和 Spencer Kimball 早在 1995 年的时候开始了该程序的开发。到了 1997 年,该程序成为了 GNU 项目 官方组成部分,并正式更名为 GIMP。时至今日,GIMP 已经成为了最好的图像编辑器之一,并有经常有 “GIMP vs Photoshop” 之争。
用户1880875
2021/09/15
7650
【Flutter&amp;Flame 游戏 - 贰贰】菜单、字体和浮层
持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第 23 天,点击查看活动详情
张风捷特烈
2022/06/19
1.6K0
【Flutter&amp;Flame 游戏 - 贰贰】菜单、字体和浮层
wordpress解决谷歌字体问题–与谷歌字体的战争!
这个问题算是困扰很久了,以往是用插件,勉强好一点,但是,随着版本更新,谷歌问题又一次出现,so,这次修改源代码,使用360提供打代理站点来解决谷歌字体的问题。其次还用了修改源代码的方式。
十四君
2019/11/28
1.4K0
javascript动态设置select下拉菜单字体大小
本章节分享一段极其简单的代码实例,它使用javascript实现了动态设置select下拉菜单字体大小的功能。
IT工作者
2021/12/28
1.5K0
【说站】修改WordPress知更鸟导航菜单 分类字体颜色、大小
知更鸟主题的导航文字、大小和颜色其实都可以进行自定义的,下面就介绍一下如何单独修改导航菜单分类和整体修改导航菜单分类字体、颜色、大小的具体方法。
很酷的站长
2022/11/24
2.3K0
【说站】修改WordPress知更鸟导航菜单 分类字体颜色、大小

相似问题

如何安装附加Gimp字体

30

如何向gimp添加新字体?

20

GIMP 2.10.12问题

10

丢了我的Gimp菜单

20

GIMP中字体周围的绿色边框

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档