调整窗口大小时防止画布清除

2024-02-18

我正在尝试创建一个简单的应用程序,在 Canvas 标签内绘制矩形。我已将画布大小调整为全屏,但每当我调整视口大小时,画布都会清除。我试图阻止它被清除并只保留其中的内容。有任何想法吗?

http://mediajux.com/experiments/canvas/drawing/ http://mediajux.com/experiments/canvas/drawing/

  /*
  * This is the primary class used for the application
  * @author Alvin Crespo
  */
  var app = (function(){

    var domBod          = document.body;
    var canvas          = null;
    var canvasWidth     = null;
    var canvasHeight     = null;
  
    return {

      //Runs after the DOM has achieved an onreadystatechange of "complete"
      initApplication: function()
      {
        //setup envrionment variables
        canvas = document.getElementById('canvas') || null;
  
        //we need to resize the canvas at the start of the app to be the full window
        this.windowResized();
  
        //only set the canvas height and width if it is not false/null
        if(canvas)
        {
          canvasWidth = canvas.offsetWidth;
          canvasHeight = canvas.offsetHeight;        
        }
  
        //add window events
        window.onresize = this.windowResized;   
  
        circles.canvas = canvas;
        circles.canvasWidth = canvasWidth;
        circles.canvasHeight = canvasHeight;
        circles.generateCircles(10);  
  
        setInterval(function(){
            circles.animateCircles();
        }, 50);   
      },

      /**
      * Executes Resizing procedures on the canvas element
      */
      windowResized: function()
      {
        (this.domBod === null) ? 'true' : 'false';
        try{
          console.log(canvas);
          canvas.setAttribute('width', document.body.clientWidth);
          canvas.setAttribute('height', document.body.clientHeight);        
        }catch(e) {
          console.log(e.name + " :: " + e.message);
        }
      },

      /**
      * Returns the canvas element 
      * @returns canvas
      */
      getCanvas: function()
      {
        return canvas;
      }

    };
  })();

设置画布宽度属性将清除画布。
如果您调整样式宽度(例如canvas.style.visibility),它会扩展(通常不会以如此漂亮的方式)。
如果您想让画布更大但保持其中的元素不变,我建议将画布存储为图像 - 例如打电话给toDataURL方法获取图像,然后将其绘制到调整大小的画布上drawImage().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

调整窗口大小时防止画布清除 的相关文章

随机推荐

  • Matplotlib:多个轮廓变量的轮廓图的多个图例

    我需要在同一页面上绘制多个变量的多个等高线图 我可以使用 MATLAB 来完成此操作 请参阅下面的 MATLAB 代码 我无法让 matplotlib 显示多个图例 任何帮助将非常感激 Python代码 import numpy as np
  • pandas.Series/DataFrame.fillna 限制中的错误?

    我一直在尝试使用填充 DataFrame 和 Seriesfillna与value and limit关键词 这limit不包括时受到尊重value 但只要包括value限制不再受到尊重 这是使用 DataFrame 的示例 import
  • 如何使用 Python 中的 Bing Speech API 转录语音文件?

    如何使用 Python 中的 Bing Speech API 转录语音文件 我的语音文件超过 15 秒 我知道人们可以在 Python 中使用 Bing Speech REST API https gist github com jelli
  • MongoDB 在包含 50.000.000 个以上文档的大型集合上写入性能较差

    我有一个 MongoDB 用于存储产品数据204 639 403项目 这些数据已经按项目所在国家 地区吐出到四个逻辑运行在同一台物理机器上的同一个 MongoDB 进程中的数据库 以下是每个逻辑数据库的文档数量列表 CoUk 56 719
  • Android 服务和内容提供者之间的区别

    我正在开发一个应用程序 并对 Android 中的服务和内容提供商的概念感到困惑 在实践中 它们之间会有什么区别 Content Provider是一个外观 它定义了一种在应用程序之间共享数据的方法 您可以将本地数据库附加到您的应用程序或创
  • 休眠验证器对未来至少 24 小时内的日期的注释

    我知道存在注释 Future 如果我用这个注释来注释字段 Future private Date date 日期必须是当前时刻之后的未来日期 现在我需要验证该日期至少在当前时刻之后 24 小时 我怎样才能做到呢 明天之后 java Targ
  • awk 中打印变量

    在此脚本中 我希望 awk 打印变量 file f order and sum NR 全部在一行中 bin bash for file in pmb mpi tau xhpl mpi tile io fftw do for f in 2 5
  • 是否可以通过 UI 将新字段添加到 bigquery 中 RECORD 类型的现有字段中?

    是否可以向 bigquery 中的 RECORD 类型的现有字段添加新字段 例如 如果我当前的架构是 u fields u mode u NULLABLE u name u test1 u type u STRING u fields u
  • Ruby 中的自定义日志记录最佳实践

    在 Ruby 中管理自定义日志记录的最佳实践是什么 我应该对记录器进行猴子补丁来做我想做的事吗 或者从它延伸出来 还是委托 红宝石的方法是什么 我厌倦了为此而定制的黑客 我想要更干净 更优雅的东西 贝茨有一个截屏视频 http railsc
  • 链接 OpenCV 4.1.0,包含有效,库无效

    将 Ubuntu 从 16 04 更改为 18 04 将 OpenCV 从 3 4 1 更改为 4 1 0 后 我无法编译 任何东西 一步步 我从 github 下载了源代码 设置了这些标志 cmake D CMAKE BUILD TYPE
  • 字符串上的 Python hash() 函数

    CPython2 7中如何计算某个特定字符串的哈希值 例如 这段代码 print hash abcde 1000 即使我重新启动 Python 进程并重试 我做了很多次 也会返回相同的值 所以 看来id 此计算中不使用字符串的 内存地址 对
  • 如何在 Mongoose 模式中设置数组大小限制

    您能否告诉我在创建 Mongoose 模式时是否有任何方法可以设置数组大小的限制 例如 var peopleSchema new Schema name type String required true default true here
  • 将 DefaultIfEmpty 与对象一起使用?

    我在 MSDN 上看到了一个示例 如果没有返回任何内容 它可以让您指定默认值 见下文 List
  • 如何用JavaScript检测屏幕分辨率?

    有没有一种方法适用于所有浏览器 原答案 Yes window screen availHeight window screen availWidth update2017 11 10 From Tsunamis https stackove
  • Jboss一步步设置热部署

    您好 我想问一下如何配置 jboss 服务器以进行实时 热部署 每次当我更改 jsp html js 或 css 文件的某些代码时 我总是需要清理和构建项目 而不是一次又一次地将项目部署到 jboss 这花费了我很多时间 我为此浪费时间 当
  • 将 R 数据框中的列表扩展到数据框中的其他行?

    In a 今天早些时候单独提出问题 https stackoverflow com questions 34206003 how to flatten r data frame that contains lists我问如何将嵌套列表展平为
  • 何时使用 low < high 或 low + 1 < high for 循环不变式

    我读过多篇文章 包括 Jon Bentley 的二分搜索章节 这就是我对正确的二分搜索逻辑的理解 它在我所做的简单测试中有效 binarysearch arr low high k 1 while low lt high 2 mid low
  • 防止在 C++ 中递归调用 main()

    我有一个类似的代码如下 int main some code motors int motors if condition some code main else if condition some code main else main
  • 高级过滤器 - 排除标头

    我有一个执行高级过滤器的宏 我怎样才能从中排除标题 我尝试改变C C to C2 C但它不起作用 Sub extractuniquevalues2 Dim wks As Excel Worksheet Dim wksSummary As E
  • 调整窗口大小时防止画布清除

    我正在尝试创建一个简单的应用程序 在 Canvas 标签内绘制矩形 我已将画布大小调整为全屏 但每当我调整视口大小时 画布都会清除 我试图阻止它被清除并只保留其中的内容 有任何想法吗 http mediajux com experiment