创建 HTML5 画布图案并用它们填充内容

2024-01-15

我有困难.createPattern(image,"repeat").

  1. 我可以用我自己创建的图案填充一个正方形吗.toDataURL() and .createPattern()?
  2. 我可以用当前画布上的图案填充一个正方形吗?
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");

context.strokeRect(0.5, 0.5, 10, 10);
context.arc(5.5, 5.5, 3, 0, Math.PI);
context.rect(3, 3, 1, 1);
context.rect(7, 3, 1, 1);
context.stroke();

var img = new Image();
img.src = canvas.toDataURL();
context.drawImage(img, 10, 10); // works

context.beginPath();
var pattern = context.createPattern(img, "repeat"); // doesn't work
context.fillStyle = pattern;
context.fillRect(20, 20, 100, 100);
context.fill();

context.beginPath();
var pattern2 = context.createPattern(canvas, "repeat"); // doesn't work
context.fillStyle = pattern2;
context.fillRect(120, 20, 100, 100);
context.fill();
<canvas id="canvas" width="320" height="240" style="border: solid darkblue 1px;background-color: aliceblue"></canvas>

您将需要为该模式创建一个单独的画布,因为您无法自引用该画布以与模式一起使用。

原因是,当您引用尝试绘制的原始画布时,图案将具有相同的大小,并且只会绘制一个实例,因为没有空间容纳更多实例。

因此,为了使其工作,您需要定义一个较小尺寸的图案,因此我们需要一个单独的画布或图像并将其作为图案的源传递。

var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");

// create the off-screen canvas
var canvasPattern = document.createElement("canvas");
canvasPattern.width = 10;
canvasPattern.height = 10;
var contextPattern = canvasPattern.getContext("2d");

// draw pattern to off-screen context
contextPattern.beginPath();
contextPattern.strokeRect(0.5, 0.5, 10, 10);
contextPattern.arc(5.5, 5.5, 3, 0, Math.PI);
contextPattern.rect(3, 3, 1, 1);
contextPattern.rect(7, 3, 1, 1);
contextPattern.stroke();

// now pattern will work with canvas element    
var pattern = context.createPattern(canvasPattern,"repeat");
context.fillStyle = pattern;
context.fillRect(20, 20, 100, 100);
context.fill();
<canvas id="canvas" width="320" height="240" style="border: solid darkblue 1px;background-color: aliceblue"></canvas>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建 HTML5 画布图案并用它们填充内容 的相关文章

  • 如何仅将网站的特定部分放入 iframe 中?

    我只想将网站的一小部分放入 iframe 中 我该怎么做 通常 当我为网站 假设是雅虎 设置 iframe 时 它 会获取整个网站 假设我只想要网站的一小部分 我该怎么做 是否可以在网站的 iframe 上添加边距 我想在我的网站上放置一个
  • 如何使用 CSS 将 div 置于表格中心?

    我正在尝试向我的网站之一添加幻灯片 整个页面布局在一个 HTML 表格中 我非常讨厌它并且没有选择 我想将我的幻灯片放在该特定列的中心 我的 CSS 如下所示 slideshow position relative slideshow IM
  • 如何将 HTML 表格转换为 csv 格式?

    是否有 HTML 解析器或某些库可以自动将 HTML 表格转换为 CSV 数据行 Here is http www unix com shell programming scripting 45274 html table csv html
  • 将 Isotope 与通过 XML 和 jQuery 加载的对象一起使用。这可能吗?

    我正在使用 XML 和 jQuery 加载对象 并尝试连接到同位素 但似乎这是不行的 这可能吗 我尝试了许多不同的解决方案 但似乎找不到有效的解决方案 这就是我所拥有的 我已经尝试过同位素中的回调函数 但仍然没有运气 我用 XML 调用我的
  • 页面点击其他路径后 $timeout 继续运行

    我在用yo angular fullstack生成器来构建我的网站 当用户注册该网站时 它将发送一封带有链接的激活电子邮件 当用户点击该链接时 会显示激活成功并超时进入主页 但是 当超时未结束 用户点击页面中的任何其他链接时 会跳转到其他页
  • 正则表达式 - 避免表达式中出现字符串

    我正在尝试创建一个应该匹配以下情况的正则表达式 如果单词完全匹配 first second third 那么匹配应该失败 但如果它周围有任何字符 那么应该匹配该字符串 我还需要避免字符串中的某些字符集 如果这些字符是字符串的一部分 则匹配结
  • 用于导出到 CSV/Excel 的数据 URI(无服务器端请求):浏览器支持/限制?

    以下问题 Javascript 或 Flash 导出至 CSV Excel https stackoverflow com questions 8150516 javascript or flash export to csv excel
  • 如何使用 selenium 获取 javascript 结果?

    我有以下代码 from selenium import selenium selenium selenium localhost 4444 chrome http some site com selenium start sel selen
  • 是否可以使用 Javascript 读取 PHP 会话?

    我正在使用 cakePHP 1 26 在控制器中 我得到了一个包含以下代码行的函数 this gt Session gt write testing user this gt Session gt read testing 现在系统编写了一
  • 在IOS中,引导模式中的iframe无法滚动

    我在引导程序模态体内有一个 iframe div class modal fade div class modal dialog div class modal content div class modal header div div
  • Web浏览器控件:如何捕获文档事件?

    我正在使用 WPF 的 WebBrowser 控件加载一个简单的网页 在这个页面上我有一个锚点或一个按钮 我想在我的应用程序后面的代码中 即在 C 中 捕获该按钮的单击事件 WebBrowser 控件是否有办法捕获加载页面元素上的单击事件
  • chrome 扩展 - 将数据从后台传递到自定义 html 页面

    创建浏览器扩展 我必须从 background js 打开新选项卡并将 JSON 数据传递到这个新选项卡 在新选项卡中 我使用传递的 JSON 数据来操作 渲染 DOM 下面是我的 background js 的一部分 我在其中使用自定义
  • 有不同图像尺寸的缩略图 Bootstrap

    我想要包含不同大小和不同文本量的图像的缩略图 但我希望它们都具有相同的大小 像这样来自 Bootstrap 站点的示例 http getbootstrap com components thumbnails custom content 下
  • 优化正则表达式以过滤数千个 HTML 选择选项

    背景 我开发了一个基于 jQuery 的穿梭小部件 https stackoverflow com a 13557000 59087对于 HTMLselect元素 因为我找不到一个经过最低限度编码并提供正则表达式过滤器来补偿的元素变音符号
  • 单击react.js 切换列表的背景颜色

    我正在尝试创建一个具有以下功能的列表 悬停时更改列表项的背景颜色 单击时更改列表项的背景颜色 在单击的元素之间切换背景颜色 即列表中只有一个元素可以具有 clicked 属性 我已经执行了 onhover 1 和 2 功能 但无法实现第三个
  • Javascript - 如何计算数字的平方?

    使用 JavaScript 函数 function squareIt number return number number 当给定数字 4294967296 时 函数返回 18446744073709552000 每个人都知道真正的答案是
  • nvd3.js - 无法更改折线图中线条的颜色

    我正在尝试更改 nvd3 折线图不同线条的颜色here http nvd3 org livecode index html codemirrorNav但我无法理解该怎么做 我想将示例中的 2 条线的颜色更改为绿色和青色 我试过 nv add
  • Javascript / jQuery - 转换特殊 html 字符

    我有一个pre元素中包含一些 html 代码 该代码中有特殊字符 例如 lt 所以它不会破坏页面 然后我有一个 javascript 函数 它获取此 pre 元素的内容 突出显示它 使用 codemirror 并用突出显示的文本替换元素内容
  • html 表格顶部对齐?

    我怎样才能让图像和内容向右顶部对齐 如你所见 我尝试了 valign top table border 0 cellspacing 0 cellpadding 0 tbody tr valign top td valign top img
  • 从 Node.js 调用 execl、execle、execlp、execv、execvP 或 execvp 的方法

    POSIX 系统公开了一系列exec函数 允许人们将可能不同的东西加载到当前进程中 保留打开的文件描述符 进程标识符等 可以出于多种原因执行此操作 在我的情况下 这是引导 我想更改我自己的进程的命令行选项 然后在现有进程上重新加载它 这样就

随机推荐

  • Skobbler SDK Android - SKNavigationState 对象损坏/不一致

    我们确实遇到了 SKNavigationState 更新与 Android 的一些不一致问题 有时 我们在开始导航后会得到不一致的 SKNavigationState 对象 因此导航停止工作 奇怪的是 有时它确实有效 首先 我们怀疑某些构建
  • 用于列出所有打开的资源管理器窗口的 Powershell 脚本

    这个问题 https stackoverflow com questions 31347905 get report of all open explorer windows显示了一个 Powershell 脚本 用于生成打开的文件资源管理
  • 通过命令行使用苏门答腊pdf批量打印pdf

    自从 Adob e 发布了 Adob e Reader 的新更新 2014 年 9 月 16 日的 11 09 以来 我们在通过命令行打印 pdf 文件时遇到了问题 我们的正式脚本如下所示 job for F tokens 1 delims
  • vuex 未加载用 vuex-module-decorators 装饰的模块

    当尝试将带有 vuex module decorators 的存储模块加载到初始化程序中时 我收到此错误 vuex esm js 2f62 261 未捕获类型错误 无法读取属性 Array forEach 的 eval vuex esm j
  • 在 SQL Server 中存储大量 XML 类型数据的最佳实践

    是否有人可以分享有关在 SQL Server 2008 中存储 XML 字段类型数据的最佳实践 我们有很多小型 XML 结构 但也有一些较大 gt 50MB 我们发现删除时速度有点慢 任何建议 战争故事将不胜感激 我发现到目前为止大多数答案
  • SELECT 语句中有多个条件?

    首先 我没有 ABAP 经验 我在这里只是猜测 我想向现有报表中的 SELECT 添加条件 现有代码如下所示 SELECT SINGLE FROM EKPO WHERE EBELN GT MSEG EBELN AND EBELP GT MS
  • 更改PostgreSQL 9.6中某种数据类型表中的所有列

    似乎几个月前我遇到了一个涉及此问题的问题 但现在我似乎找不到了 基本上 我想做两件事 首先 制作了许多表格 其中有几列numeric 20 2 我想把它们全部改为numeric 对于一列来说 该语句很简单 ALTER TABLE table
  • 如何更改 Visual Studio Code 中的 UI 语言?

    如何更改 UI 语言视觉工作室代码 https code visualstudio com 1 0 于 2016 年 4 月发布 打开VScode 按 F1 并输入 显示 选择 配置显示语言 选择你的语言 上面是已安装的语言 下面是其他语言
  • 如何用Java连接MySQL?

    我已经安装了MYSQL服务器5 1 然后我安装了 mysql connector java 3 0 8 stable bin jar 并将其放入驱动器 c 中 文件夹 core 为 C core 然后在计算机的属性中 我创建带有变量名 CL
  • Three.js 鼠标滚轮用于向上/向下移动相机而不是放大/缩小

    你怎么做到这一点 我使用创建了一个场景三 js编辑器 https threejs org editor 并使用 发布 选项下载该项目 我编辑了 app js 文件以导入 OrbitControls 因此现在我可以使用鼠标滚轮 或者在我的情况
  • 从 pod minikube kubernetes 中的容器公开端口

    我是 K8s 新手 我将尝试使用以下命令在 pod 中运行 2 个容器的 minikube kubectl apply f deployment yaml 和这个deployment yml apiVersion v1 kind Pod m
  • 将图像从图像控件存储到 StorageFile

    如何从 Windows 应用商店应用程序中的图像控件将图像存储到 StorageFile 中 我正在使用以下链接 但这对我来说没有用 StorageFile file await StorageFile CreateStreamedFile
  • 当 Perl 内存不足时,是否有标准的行为方式?

    Perl 解释器 又名 perl 在内存不足时是否有标准的行为方式 是否以任何方式记录 指定 以某种统一的方式编码 我对任何表示为正在运行的 Perl 代码契约的标准特别感兴趣 例如 将die叫做 将要END块被执行 ETC 我对这两个 理
  • 如何使discord.py中的数据以表格形式显示?

    您好 我正在创建一个可以制作积分表 排行榜的机器人 下面是效果非常好的代码 def check ctx return lambda m m author ctx author and m channel ctx channel async
  • Angularjs:如何将范围变量传递给指令?

    我正在尝试使用指令创建多个标签并将其附加到 div 如下所示 module directive createControl function return function scope element attrs console log a
  • 在 R 中添加进度条以复制功能

    我在用replicate经营我自己的analyse函数多次 analyse返回一个列表 results lt replicate reps analyse 有没有办法添加进度条 显示当前完成的复制百分比 我尝试过txtProgressBar
  • 如何自定义 chrome devtools elements 面板上的右键单击

    devtools 元素面板右键单击 https i stack imgur com sufm3 png 看上面的图片 右键单击任何节点都会显示选项菜单 例如 添加属性 和 编辑属性 等 我希望能够扩展右键菜单来添加自定义事件 例如 我需要获
  • 使用 gsub 从字符串中删除模式

    我正在努力删除字符串中下划线之前的子字符串 我想使用 通配符 作为下划线之前的位可以变化 a lt c foo 5 bar 7 a lt gsub a perl TRUE 结果应该如下所示 gt a 1 5 7 我也尝试过类似 or 但并没
  • android:如何在折叠工具栏中添加带有文本的按钮

    如何实现如下布局 我可以在没有添加按钮的情况下实现 但是如何添加ADD按钮和添加按钮在向上滚动时应该随着图像的视差而消失 我发现浮动操作按钮无法添加文本 我必须只使用按钮 我的 xml 布局没有添加按钮
  • 创建 HTML5 画布图案并用它们填充内容

    我有困难 createPattern image repeat 我可以用我自己创建的图案填充一个正方形吗 toDataURL and createPattern 我可以用当前画布上的图案填充一个正方形吗 var canvas documen