当前位置: 首页 > wzjs >正文

网站设计大作业免费的网站平台

网站设计大作业,免费的网站平台,顺德做网站公司哪家好,做网站公司需要什么1、Canvas 状态管理canvas.withSave() 是一个扩展函数,它内部会调用 canvas.save() 和 canvas.restore(),确保 Canvas 状态在闭包结束后自动恢复。2. 避免状态泄漏如果不使用 withSave(),手动调用 save() 和 restore() 容易出错:忘…

1、Canvas 状态管理

canvas.withSave() 是一个扩展函数,它内部会调用 canvas.save() 和 canvas.restore(),确保 Canvas 状态在闭包结束后自动恢复。

2. 避免状态泄漏

如果不使用 withSave(),手动调用 save() 和 restore() 容易出错:

  • 忘记调用 restore() 会导致 Canvas 状态混乱
  • 多次调用 save() 而不对应 restore() 会耗尽 Canvas 状态栈

3. 代码安全性

// 错误的方式 - 容易忘记 restore()canvas.save()// ... 绘制代码 ...// 如果这里抛出异常,restore() 永远不会被调用// 正确的方式 - 自动管理状态canvas.withSave() {// ... 绘制代码 ...// 即使抛出异常,状态也会自动恢复}

4. 作用域清晰

withSave() 闭包明确界定了需要特殊 Canvas 状态的代码范围:

  • 闭包内的代码使用变换后的 Canvas
  • 闭包外的代码使用原始 Canvas

5. 变换的局部性

在这个例子中:

canvas.withSave() {translate(offsetX, offsetY)        // 平移scale(scaleFactor, scaleFactor, cx, cy)  // 缩放// 绘制矩形 - 使用变换后的坐标系for (rect in rects) {drawRect(...)}} // 自动恢复原始状态// 这里绘制子视图 - 使用原始坐标系super.dispatchDraw(canvas)

6. 为什么需要变换

  • 平移 (translate):移动整个画布,实现视图的拖拽效果
  • 缩放 (scale):以中心点为基准缩放,实现缩放效果
  • 矩形绘制:在变换后的坐标系中绘制,这样矩形就会跟随视图的变换

7. 为什么子视图绘制在闭包外

super.dispatchDraw(canvas) 需要在原始坐标系中执行,因为:

  • 子视图的布局已经考虑了变换
  • 子视图有自己的绘制逻辑
  • 避免双重变换导致的问题

这种设计确保了:

  • 矩形绘制使用变换后的坐标系
  • 子视图绘制使用原始坐标系
  • Canvas 状态自动管理,避免错误
http://www.dtcms.com/wzjs/41531.html

相关文章:

  • c 如何快速做动态网站关键字挖掘爱站网
  • 北京装修平台网站seo站群优化
  • 怎么做免费网站 视频推广网址
  • 威海住房建设部官方网站吸引人的软文标题
  • 好的外贸网站建设莆田百度快照优化
  • 网站建设是什么专业啊网络软文是什么
  • 网站制作英文版网站seo是什么意思怎么解决
  • 做网站的图片传进去很模糊企业新闻营销
  • 如何做简单网站app注册推广任务平台
  • dede网站搬家后为什么都没有内容呢放单平台大全app
  • 网站建设公司中企动力强南宁网络推广有几家
  • 9个做简历的网站沈阳seo建站
  • 如何做百度推广网站seo学徒招聘
  • 杭州做网站推广公司推荐如何免费创建自己的平台
  • 哪家做网站好做企业网站哪个平台好
  • 网站建设的费用计什么科目搭建网站步骤
  • 怎样网站不用备案市场调研方案怎么写
  • 谁做视频网站网络销售怎么学
  • thinkphp网站开发教程营销型网站制作企业
  • 校园超市网站开发常见的网络营销模式
  • 国外美女图片 网站源码志鸿优化设计官网
  • 网站建设 sql优化模型有哪些
  • 网站建设 提供源码app推广方案策划
  • 竞价网站做不做链接广州市口碑全网推广报价
  • 二级网站建设方案 试行cps广告是什么意思
  • 杭州做网站的好公司有哪些公司网站推广运营
  • 网页制作工具可以发布网站吗汕头seo按天付费
  • 响应式网站 手机版张文宏说上海可能是疫情爆发
  • 文章网站后台浏阳廖主任打人
  • 科技网络公司经营范围广州seo服务外包