CanvasRenderingContext2D 中的透明度组

2024-01-12

有没有一种方法可以将多个绘制操作组合到 2d 画布渲染上下文中,从而使它们各自独立combined结果被组合到画布的先前内容上,而不是每个绘图操作都由其本身组合?

一个应用程序:我想绘制一条带有箭头的半透明线,并且我想避免线和箭头重叠的那些区域的不透明度增加。

许多其他渲染模型都支持此类功能。 SVG 有一个组不透明度 https://www.w3.org/TR/SVG11/masking.html#ObjectAndGroupOpacityProperties设置,如第 14.5 节所述。这PDF 参考 https://wwwimages2.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/pdf_reference_1-7.pdf第 7.3 节中描述了“透明组”。在许多图形应用程序中,用户可以构建图层,然后将它们组合为一个整体。

我想我可以设置第二个不可见画布用作屏幕外图像,将我的内容渲染到该画布上,然后使用globalAlpha https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalAlpha以所需的半透明度将结果合成到主画布上。但我希望有一些更优雅的解决方案,即使到目前为止我在文档中找不到它。

合并 CanvasRenderingContext2D 中的多个路径以作为一组进行填充和描边 https://stackoverflow.com/q/35988889/1468366显然也有类似的目标。但重点似乎是如何对路径执行布尔运算,可能是这样clipper https://sourceforge.net/projects/jsclipper/可以。因此,对于这篇文章,我对预先操纵路径不感兴趣;我希望能够像平常一样画出每一笔。


不,如果不使用中间画布,目前这是不可能的。

Unless所有有问题的绘制操作都可以组合成一个路径,从而使用一次调用stroke() and fill()。我认为这里的情况并非如此,但后来搜索的人可能正在寻找该信息。

// two rectangles composed into a single draw operation:
ctx.rect(0, 0, 10, 10);
ctx.rect(5, 5, 10, 10);
ctx.fill();

// With transparency, the above produces a different result from:
ctx.rect(0, 0, 10, 10);
ctx.fill();
ctx.rect(5, 5, 10, 10);
ctx.fill();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CanvasRenderingContext2D 中的透明度组 的相关文章

  • 如何将webview内容划分为多个页面

    我必须使用 Android 上的 PdfDocument 从 webView 创建 PDF https developer android com reference android graphics pdf PdfDocument htm
  • LibGDX纹理混合与OpenGL混合功能

    在 libGdx 中 我试图创建一个成形纹理 采用完全可见的矩形纹理并将其遮罩以获得成形纹理 如下所示 在这里我在矩形上测试它 但我想在任何形状上使用它 我调查过本教程 http www learnopengles com tag addi
  • 为什么在缩放的 html5 画布中可以看到伪像?

    我见过this https stackoverflow com questions 7615009 disable interpolation when scaling a canvas and this https stackoverfl
  • PyQt:使用 alpha 通道创建 QPixmap,而不是预乘颜色通道

    我想创建一个 QPixmap 来使用 QPainter 进行绘制 QPixmap 应支持透明度 而不使用预乘颜色通道 目前 我通过创建具有所需尺寸的 QPixmap 并用每个通道 包括 alpha 设置为零的 QColor 填充它来实现此目
  • 带滚动条的 HTML 画布

    我正在宽度不等的画布上绘制图表 每个画布可以有自己的滚动条吗 我尝试将所有画布放在一个 div 中并指定最大宽度 但它不起作用 是否有可能所有画布在页面上的可见宽度均为 500 像素 并且每个画布都有其滚动条来查看画布的整个宽度 谢谢 指定
  • 为什么盒子大小调整不适用于画布元素上的宽度/高度属性?

    让我们考虑一下这段代码 canvas width 150px height 150px canvas box sizing border box border 5px solid
  • 如何从SurfaceView绘制到Canvas?

    我正在尝试做简单的画家 问题是Android看起来有三个独立的Canvas并给我它来顺序绘制 我用以下方式制作了用户界面SurfaceView 把霍尔德从中拿走 Override protected void onCreate Bundle
  • 垂直翻转 Android Canvas

    有没有一种简单的方法可以在 Android 中翻转画布 我似乎找不到任何可以让我垂直翻转它的东西 这样 y 轴上的零就是手机屏幕的底部而不是顶部 如果解决方案不是特别快也没关系 因为我没有对画布进行任何计算密集的操作 提前致谢 Try ca
  • 检测哪些 Tilemap 单元与 Unity 中的 Collider2D 发生碰撞

    我有一个Tilemap 这有一个TilemapCollider2D成分 在其上绘制了几个图块 每个图块都有自己的精灵碰撞器形状 然而它们是精灵图块而不是预制件 它们不是使用预制画笔绘制的 我还有一个游戏对象Collider2D a Circ
  • 在 Fabric.js 中进行裁剪的“toDataURL”函数中,Multiplier 属性无法正常工作

    我的原始尺寸canvas is 800X700 我在用clipTo要在画布的选定部分中工作 var rect new fabric Rect left 100 top 50 fill fff width 376 height 602 str
  • EaselJS Alpha 遮罩滤镜

    我对 Canvas 还很陌生 我一直在尝试将图像颠倒过来EaselJS Alpha 蒙版 http www createjs com demos easeljs alphamaskreveal示例 以便初始图像清晰 并且您可以paint是模
  • HTML Canvas:旋转图像 3D 效果

    我怎样才能旋转图像 例如45度 并挤压图像 假设我有一个完美的方形图像 我可以将它旋转到我想要的任何角度 但我想让旋转后的正方形被压扁 使高度比宽度小 2 3 生成的图像将不是一个完美的旋转正方形 而是一个被压扁的正方形 你知道我怎样才能达
  • 从图像创建半透明光标

    是否可以从图像创建光标并使其半透明 我目前正在拍摄自定义图像并覆盖鼠标光标图像 如果我可以将其设为半透明 那就太好了 但不是必需的 销售人员喜欢闪亮的 目前正在做这样的事情 Image cursorImage customImage Get
  • 无法在首页加载时在 Google Chrome 中使用 HTML5 和 getUserMedia() 从网络摄像头拍摄照片

    参考自这篇关于 HTML5Rocks 的文章 http www html5rocks com en tutorials getusermedia intro 我正在尝试构建一个实用程序来从网络摄像头拍照 下面是我的 HTML 代码片段
  • fillRect(0,0,0,1)和clearRect()有什么区别

    之间有什么区别 ctx fillStyle rgba 0 0 0 1 ctx fillRect 0 0 100 100 and ctx clearRect 0 0 100 100 性能或生成的图像或画布数据有什么差异吗 更新以对应有问题的
  • 使用拇指移动变换后的控件会产生奇怪的行为

    当尝试使用拇指在画布上移动控件时 我遇到了奇怪的行为 当我将控件添加到画布并使用 Thumb DragDelta 事件来移动它时 一切看起来都很好 但是 当我对控件应用旋转变换时 拖动它是很奇怪的 控件开始围绕光标旋转 角度越大 圆圈越大
  • 使用 PHP 或 HTML5 进行图像弯曲

    我希望实现 http i53 tinypic com 2gule04 jpg http i53 tinypic com 2gule04 jpg 我已经尝试过提到的答案弯曲以矩形开头的图像 由用户上传 最好使用 Canvas 或 JS htt
  • 将 PictureStream 转换为 HTML5 画布

    我正在从 net Web 服务检索图片流的字节数组 JSON 字节数组响应如下所示 137 80 78 372 617 more 我正在尝试转换这个字节数组并将其绘制到 HTML 画布中 如下所示 var context document
  • 三种js更新纹理生成Canvas的最佳性能方式

    I have THREE Points with THREE PointsMaterial As a map我使用生成的动态cavas image 我需要重新渲染canvas在每一帧上 我的部分代码 function makeEnemyBa
  • 使用 javascript 将 html 文本渲染为位图,无需服务器端代码

    我需要使用 javascript 代码来转换 html 中的文章 帖子 以便最终用户以位图的形式查看 有没有办法在没有服务器端代码的情况下做到这一点 example p testing text here p 您可以使用例如html2can

随机推荐

  • 不声明外键的导航属性

    我的所有模型都至少包含两个关联 在 ef4 中对此进行建模时 我只能通过使用流畅的接口在没有第二个外键属性的情况下做到这一点 foreignKey 似乎是正确使用的属性 除了它需要一个字符串参数这一事实 所以我的问题是 您可以拥有一个导航属
  • 如何检查 jq 中的 null 或空并在 jq 转换中替换空字符串

    如何检查 jq 中的 null 或空并在 jq 转换中替换空字符串 下面的 JSON 示例 这是 JQ JQ amazon items select name contains shoes as item activeItem amazon
  • Eclipse 4 RCP(又名 E4)文档

    除了 Vogella 的教程和他的书之外至少还有什么吗 这完全是基于那些言论 他的存储库中的示例通常要么不完整 未完成 无法运行 这些示例甚至与实际的书不匹配 我想为此至少找到一些javadoc 因为任何一步到了一边 我就完全迷失了如何完成
  • 使用python ctypes与nvapi交互(后续附演示代码)

    这是我之前问题的后续 有关 python ctypes 和 nvapi 的帮助 https stackoverflow com questions 6163770 help with python ctypes and nvapi 我正在发
  • 运行存储在 OneDrive 上的 php 文件

    我正在开发一个 php 项目 将项目文件存储在 OneDrive 上 以便我可以从任何地方访问它们 我已经设置了 XAMPP 带有VirtualHost指向 OneDrive 中的项目文件夹 以便我可以在浏览器中运行它 直到昨天 此功能一直
  • 向 asp.NET RadioButton 控件添加自定义属性

    我想向名为的 asp net RadioButton 添加一个自定义属性Key我正在使用客户端进行 ajax 请求 我发现我的 aspx 标记如下
  • 赋值运算符 String 对象

    我是JAVA编程新手 我在我的书上读过 String a Hello String b Hello System out println a b 这应该返回false因为 a 和 b 引用 String 对象的不同实例 因为赋值运算符比较对
  • NetBeans IDE 7.2.1 无法访问 java.lang 致命错误:无法在类路径或 bootclasspath 中找到包 java.lang

    我需要有关 NetBeans 内的 android 项目的帮助 我刚刚打开在 NetBeans 中创建的项目 但遇到一些问题 无法访问 java lang 致命错误 无法在类路径或 bootclasspath 中找到包 java lang
  • C++ LibVLC 从帧/图像创建流

    我想使用 LibVLC 从图像创建视频 目前我还没有使用 LibVLC 的经验 我已经实施了一个像这里这样的测试项目 使用 libvlc 播放 mp3 的简单 C 程序 https stackoverflow com questions 1
  • Google Chrome 自动填充背景颜色在版本 72.0 中是否已更改?

    我最近注意到 在 Google Chrome 中 所有自动填充值的输入元素都显示蓝色背景 是的 Google 将自动填充预览的背景颜色更改为GoogleBlue50 您可以在这里找到问题 https bugs chromium org p
  • 如何使用表值参数插入多行,然后返回它们的 ID?

    在我的应用程序中 我需要将大量 100 行插入到数据库中 将它们插入数据库后 我需要插入它们的子项 这些子项具有指向子项的外键引用 我想知道是否有一种方法可以编写一个存储过程来插入所有这些行并将它们的 ID 返回到我的应用程序 您已使用表值
  • 向 JavaFX 2.2 添加其他视频编解码器/DVD 支持

    更新 由于 JFX 的媒体端已经开源 我自己对此进行了研究 这确实是可能的 但需要更改和重建 JFX 源 Java 和 C 部分 描述了该过程here http berry120 blogspot co uk 2014 03 expandi
  • TortoiseGit Log Graph 中分支线上的方形图标是什么意思?

    我在 TortoiseGit 日志图表的分支线上有方形和圆形图标 方形图标的含义是什么 Square 合并提交 回合 承诺
  • 如何将twitter、facebook集成到iPhone应用程序中?

    我想将 facebook twitter flickr 放入我的 iPhone 应用程序中 以便用户可以轻松登录并从我的应用程序发布消息 把问题放在这里就是为了得到一些线索或者现有的作品来达到这个目的 经过搜索 我在这里找到了一些相关作品h
  • 导入与命名空间同名的类

    我正在使用带有单独 types 定义的第三方库 如下所示 declare namespace Foo declare class Foo export Foo 如何在我的代码中导入 Foo 类 另外 这种奇怪的名称重复在 Typescrip
  • 查看 Visual Studio 中数据流 SSIS 元素的完整工具提示错误消息

    当我将光标悬停在 SSIS 数据流图中的一个元素上时 工具提示中会显示错误 Where我可以看到全文这个的错误信息 显示此工具提示的元素是标记为 规格 的元素 我正在使用 Microsoft Visual Studio 2008 The m
  • 插入初始数据JPA

    是否可以在我的数据库中加载初始数据 我正在使用 JPA 并使用 删除并创建 策略 这样每次我想测试我的应用程序时 数据库都会首先被清除 我将不得不重新创建所有内容 我知道在其他语言中 Php gt Doctrine datafixtures
  • JPA 使用 ElementCollection 映射多行

    我正在尝试遵循JPA教程 http en wikibooks org wiki Java Persistence ElementCollection并使用ElementCollection记录员工电话号码 PHONE table OWNER
  • 将 python 请求与 javascript 页面结合使用

    我正在尝试将 Requests 框架与 python 一起使用 http docs python requests org en latest http docs python requests org en latest 但是我试图访问的
  • CanvasRenderingContext2D 中的透明度组

    有没有一种方法可以将多个绘制操作组合到 2d 画布渲染上下文中 从而使它们各自独立combined结果被组合到画布的先前内容上 而不是每个绘图操作都由其本身组合 一个应用程序 我想绘制一条带有箭头的半透明线 并且我想避免线和箭头重叠的那些区