首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

canvas绘图基本使用方法(三)

canvas绘图基本使用方法(三) ?...图形组合: globalAlpha: 设置或返回绘图的当前 alpha 或透明值 该方法主要是设置图形的透明度,这里就不具体介绍。...忽略目标图像 xor 使用异或操作对源图像与目标图像进行组合 下面是一个小示例,可以通过点击改变组合效果: ? ? ? 读者可以点击标签来观察不同的组合效果,效果如下: ?...提示:一旦剪切了某个区域,则所有之后的绘图都会被限制在被剪切的区域内(不能访问画布上的其他区域)。...您也可以在使用 clip() 方法前通过使用 save() 方法对当前画布区域进行保存,并在以后的任意时间对其进行恢复(通过 restore() 方法) 以下是用一个圆去截取一个矩形的示例: ?

95830
您找到你想要的搜索结果了吗?
是的
没有找到

利用Canvas进行网上绘图

2 了解canvas 2.1 基本绘制步骤 (1)创建画布 通过使用H5中的标签来新建一块画布,里面的需要指定一个id属性,width和height指定画布的宽度和大小。...图 2.1.1 描边和填充 在canvas中还有一个相当于橡皮擦的方法,使用它可以清除矩形内绘制的内容。 ?...图 2.1.2 清除矩形 2.2 绘制圆形 canvas使用arc()方法来绘制弧形和圆形。...以下有两种不同的方式来设置Canvas渐变: 当我们使用渐变对象,必须使用两种或两种以上的停止颜色。 addColorStop()方法指定颜色停止,参数使用坐标来描述,可以是0至1。...图 2.4.1 绘制渐变 3 总结 Canvas通过代码的方式进行绘图,虽然看似简单,但是想要画出更好,更精美的图像,还需要我们仔细斟酌,计划好每一步,才能发挥出其强大的功能。

2K10

【Java AWT 图形界面编程】Canvas 组件中使用 Graphics 绘图 ① ( AWT 绘图线程 | Component 绘图函数 )

一、AWT 绘图线程 在 AWT 绘图程序中 , 有一个专门的线程用于绘制界面的线程 , AWT 绘制线程 ; AWT 绘制线程 , 默认处于 等待状态 ; 当组件 第一次显示时 , 会 调用 paint...AWT 中使用 Graphics 对象进行绘图 , 在 Component 组件中 , 提供了如下 3 个 方法进行绘图 : paint(Graphics g) : 绘制组件 , 函数原型如下 ;...* 注意:有关AWT和Swing使用的绘制机制的更多信息,包括关于如何编写最 * 高效绘画代码,参见 * <a href="http://www.oracle.com/technetwork...* * 注意:有关AWT和Swing<em>使用</em>的绘制机制的更多信息, * 包括如何编写最有效的绘制代码的信息,请参见AWT和Swing中的绘制。...* * 注意:有关AWT和Swing<em>使用</em>的绘制机制的更多信息, * 包括关于如何编写最有效的绘制代码的信息,请参见 * <a href="http://www.oracle.com

70830

【Java AWT 图形界面编程】Canvas 组件中使用 Graphics 绘图 ② ( AWT 绘图步骤 | Graphics 绘图常用 API )

文章目录 一、AWT 绘图步骤 二、Graphics 绘图常用 API 一、AWT 绘图步骤 ---- 在 AWT 绘图中 , Canvas绘图所在的画布 , Graphics 是绘图使用的画笔...; AWT 绘图步骤如下 : 首先 , 自定义 Canvas 组件类 , 重写其中的 Component#paint(Graphics g) 函数 , Component 组件 与 Graphics 是由...paint(Graphics g) 函数 进行关联的 ; 然后 , 在自定义的 Canvas 组件 重写的 Component#paint(Graphics g) 函数中 , 先调用 Graphics...* 使用此图形上下文的所有后续图形操作都使用此指定颜色。 * @param c 新的渲染颜色。...* 使用此图形上下文的所有后续文本操作都使用此字体。 * 空参数将被无声地忽略。 * @param font 字体.

96910

【Android UI】Canvas 画布 ⑨ ( Canvas 绘图坐标系平移实例 )

画布中 , 有 2 套坐标系 , 分别是 : Canvas 自身坐标系 Canvas 绘图坐标系 一、Canvas 绘图坐标系平移实例 ---- 在 Canvas#onDraw 中进行绘制 , Canvas...的绘图坐标系 变为新的位置 ; // Canvas 绘图坐标分别在 X, Y 轴正向平移 canvas.translate(111, 111); Canvas 自身坐标系...范围就是 黄色范围 , Canvas 绘图坐标系 初始与黄色范围重合 , 因此初始位置绘图的蓝色矩形 , 其左上角与 Canvas 自身坐标系 原点重合 ; Canvas 平移后 , 画布向右下角移动...绘图坐标系 原点 重合 ; Canvas 平移后 , 绘制的红色矩形 , 其 绘图坐标系的原点 就是 红色矩形的 左上角位置 ; 如果要终止在该 Canvas 自身坐标系中绘图 , 则调用 Canvas...#restore 方法 , 将 Canvas 绘图坐标系恢复到初始位置 , 也就是恢复到下图的样式 ; 蓝色是 Canvas 绘图坐标系 , 黄色是 Canvas 自身坐标系 ; //

74820

【Java AWT 图形界面编程】Canvas 组件中使用 Graphics 绘图 ④ ( AWT 绘图窗口闪烁问题 )

文章目录 一、AWT 绘图窗口闪烁问题 二、完整代码示例 画图的过程是有时间消耗的 , 先清屏 , 再画图 , 清屏到画图完毕之前 界面是空白的 , 这是闪烁产生的原因 ; 引入一个图片缓冲区 , 绘制的时候向缓冲区绘制..., 然后直接将缓冲区同步到画布上 , 这样就避免了界面空白情况 , 保证始终界面上有内容 ; 这就是双缓冲机制的原理 ; 一、AWT 绘图窗口闪烁问题 ---- 使用 Graphics 第一次绘图 完成后...组件中使用 Graphics 绘图 ① ( AWT 绘图线程 | Component 绘图函数 ) 博客中的绘图过程分析 , 调用 Canvas#repaint 函数 后 , 首先将组件隐藏 , 然后调用...Canvas#update 函数 ; 调用 Canvas#update 函数 后 , 首先会清除组件中的内容 , 然后调用 Canvas#paint 函数重新进行绘制 ; Canvas#update...#clearRect 函数 ; 调用 Canvas#repaint 函数时 , 会先将屏幕清空 , 然后再重新调用 Canvas#paint 函数进行绘制 , 此时就造成了界面闪烁的现象 ; 为了避免上述闪烁的情况

71410

【Android UI】Canvas 画布 ⑤ ( Canvas 坐标系 | Canvas 绘图坐标系变换示例 )

文章目录 一、Canvas 绘图坐标系变换示例 Canvas 状态保存机制 中 , 存在两个栈结构 , 分别是 状态栈 和 图层栈 ; 其中 图层栈 又称为 Layer 栈 ; Canvas 画布中 ,...有 2 套坐标系 , 分别是 : Canvas 自身坐标系 Canvas 绘图坐标系 一、Canvas 绘图坐标系变换示例 ---- Canvas 绘图坐标系 原始位置如下 , 下面的矩形就是组件本身...; 调用 Canvas#translate() 方法 , 平移后的画布如下 , 蓝色轮廓是平移后的 Canvas 画布 ; 下面的 黑色区域 ( 原本的 Canvas 范围 ) 蓝色区域 ( 平移后的...Canvas 范围 ) 都在 第一图层 中 ; 在上面的基础上 , 调用 Canvas#save 方法 , 保存当前的 Matrix 矩阵信息到状态栈中 ; Layer 栈中只有 第一图层...元素 ; 状态栈 中有量两个元素 , 就是 Canvas 原始的坐标系信息 和 当前平移一次后的坐标信息 ; 再次调用 Canvas#translate 方法 , 再次将 Canvas 画布进行平移 ,

1.1K10

【Android UI】Canvas 画布 ④ ( Canvas 坐标系 | Canvas 自身坐标系 | Canvas 绘图坐标系 )

文章目录 一、Canvas 自身坐标系 二、Canvas 绘图坐标系 Canvas 状态保存机制 中 , 存在两个栈结构 , 分别是 状态栈 和 图层栈 ; 其中 图层栈 又称为 Layer 栈 ; Canvas...画布中 , 有 2 套坐标系 , 分别是 : Canvas 自身坐标系 Canvas 绘图坐标系 一、Canvas 自身坐标系 ---- Canvas 自身坐标系 , 指的是 自定义组件 View 或...绘图坐标系 ---- Canvas 绘图坐标系 的 坐标原点 位置 , 可以认为是 Paint 画笔开始绘画的位置 ; Canvas 绘图坐标系 不是一成不变的 , 该 坐标系 与 Matrix 矩阵...相关 , 当矩阵发生变化时 , 绘图坐标系也会进行相应的改变 ; Matrix 矩阵可以通过如下函数修改 : Canvas#translate() : 平移画布 Canvas#rotate() : 旋转画布...的 图层栈 , 通过调用 Canvas#saveLayer() 函数 , 创建新的透明图层 , 后续的绘图操作都在该新图层中执行 , 调用 Canvas#restore() 或 Canvas#restoreToCount

1.2K20

canvas绘图不清晰的解决方案

现象描述   同样大小的图片(60x60px)用canvas和DOM绘制,结果发现canvas的画面质量要差很多。结果如下图所示。   ...上图中,左侧红框中的金币采用DOM绘制,右侧和下方的金币和文字等使用canvas绘制,结果canvas绘制的图片模糊不清。...解决方案   放大画布的尺寸,但是canvas显示尺寸不变;   图片像素——》canvas像素(画布尺寸)——》css像素(显示尺寸)——》屏幕实际像素   60x60               60x60...的设计的时候正好有对象的属性来分别管理画布尺寸和显示尺寸;canvas的width、height属性用于管理画布尺寸;canvas的style属性中的width、height正好是显示尺寸; 具体可以参考文章...也就是说解决方案就是设置舞台的尺寸和图片像素的尺寸一致,显示尺寸为正常显示尺寸;假设canvas的显示尺寸为窗口宽度,创建canvas的时候指定canvas的width属性为2 * body.clientHeight

1.5K100

【Android UI】Canvas 画布 ⑧ ( Canvas 绘图坐标系 2x2 矩阵 | Canvas 绘图坐标系 3x3 操作矩阵 )

文章目录 一、Canvas 绘图坐标系 2x2 矩阵 二、Canvas 绘图坐标系 3x3 操作矩阵 Canvas 状态保存机制 中 , 存在两个栈结构 , 分别是 状态栈 和 图层栈 ; 其中 图层栈...又称为 Layer 栈 ; Canvas 画布中 , 有 2 套坐标系 , 分别是 : Canvas 自身坐标系 Canvas 绘图坐标系 一、Canvas 绘图坐标系 2x2 矩阵 ---- 在 Canvas...会被转为一个 2\times2 的 Matrix 矩阵 ; 该 2\times2 的 Matrix 矩阵 用于存储 Canvas 绘图坐标系 ; Canvas 绘图坐标系 可以通过调用 Canvas...#translate 平移 , Canvas#rotate 旋转 , Canvas#scale 缩放 , Canvas#skew 扭曲斜拉 等方法 进行改变 ; 二、Canvas 绘图坐标系 3x3 操作矩阵...会与 代表 Canvas 绘图坐标系的 2 \times 2 的 Matrix 矩阵 进行运算 , 最终得到一个 新的 Canvas 绘图坐标系 ;

1.2K20
领券