• <legend id='r8EVh'><style id='r8EVh'><dir id='r8EVh'><q id='r8EVh'></q></dir></style></legend>

    • <bdo id='r8EVh'></bdo><ul id='r8EVh'></ul>

  • <i id='r8EVh'><tr id='r8EVh'><dt id='r8EVh'><q id='r8EVh'><span id='r8EVh'><b id='r8EVh'><form id='r8EVh'><ins id='r8EVh'></ins><ul id='r8EVh'></ul><sub id='r8EVh'></sub></form><legend id='r8EVh'></legend><bdo id='r8EVh'><pre id='r8EVh'><center id='r8EVh'></center></pre></bdo></b><th id='r8EVh'></th></span></q></dt></tr></i><div id='r8EVh'><tfoot id='r8EVh'></tfoot><dl id='r8EVh'><fieldset id='r8EVh'></fieldset></dl></div>
    1. <tfoot id='r8EVh'></tfoot>

        <small id='r8EVh'></small><noframes id='r8EVh'>

        在多个画布上默认禁用 imageSmoothingEnabled

        disabling imageSmoothingEnabled by default on multiple canvases(在多个画布上默认禁用 imageSmoothingEnabled)
        • <legend id='3RiXl'><style id='3RiXl'><dir id='3RiXl'><q id='3RiXl'></q></dir></style></legend>

              <small id='3RiXl'></small><noframes id='3RiXl'>

                <tbody id='3RiXl'></tbody>

                  <bdo id='3RiXl'></bdo><ul id='3RiXl'></ul>
                  <i id='3RiXl'><tr id='3RiXl'><dt id='3RiXl'><q id='3RiXl'><span id='3RiXl'><b id='3RiXl'><form id='3RiXl'><ins id='3RiXl'></ins><ul id='3RiXl'></ul><sub id='3RiXl'></sub></form><legend id='3RiXl'></legend><bdo id='3RiXl'><pre id='3RiXl'><center id='3RiXl'></center></pre></bdo></b><th id='3RiXl'></th></span></q></dt></tr></i><div id='3RiXl'><tfoot id='3RiXl'></tfoot><dl id='3RiXl'><fieldset id='3RiXl'></fieldset></dl></div>
                  <tfoot id='3RiXl'></tfoot>

                • 本文介绍了在多个画布上默认禁用 imageSmoothingEnabled的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我正在创建一个使用分层画布和精灵图像的基于浏览器的游戏,出于视觉和性能原因,我想默认禁用 imageSmoothingEnabled.据我了解,imageSmoothingEnabled 并非在所有浏览器中都可用,但有供应商前缀版本.我试图找到一种优雅的方法来默认在我的所有画布上禁用此属性(在尽可能多的浏览器中).到目前为止,这是我的方法:

                  I'm creating a browser-based game that uses layered canvases and sprite images, and for visual and performance reasons I would like to disable imageSmoothingEnabled by default. It's my understanding that imageSmoothingEnabled isn't available in all browsers, but there are vendor-prefixed versions. I am trying to find an elegant way to disable this attribute by default across all my canvases (in as many browsers as possible). So far, this is my method:

                  context1.imageSmoothingEnabled = false;
                  context1.mozImageSmoothingEnabled = false;
                  context1.oImageSmoothingEnabled = false;
                  context1.webkitImageSmoothingEnabled = false;
                  
                  context2.imageSmoothingEnabled = false;
                  context2.mozImageSmoothingEnabled = false;
                  context2.oImageSmoothingEnabled = false;
                  context2.webkitImageSmoothingEnabled = false;
                  
                  context3.imageSmoothingEnabled = false;
                  context3.mozImageSmoothingEnabled = false;
                  context3.oImageSmoothingEnabled = false;
                  context3.webkitImageSmoothingEnabled = false;
                  //etc...
                  

                  还有更优雅的方法吗?在实际创建每个画布上下文之前,是否可以将上下文的 API 更改为默认值?

                  Is there a more elegant approach? Is it perhaps possible to change the context's API to default to false, before actually creating each canvas context?

                  推荐答案

                  是的,你有一个更简洁的方法:因为你总是会通过在画布上使用 getContext('2d') 来获取上下文,您可以注入 getContext,以便它在返回上下文之前执行您喜欢的任何设置.

                  Yes, you have a cleaner approach : since you will always get a context by using getContext('2d') on a canvas, you can inject getContext, so that it does any setup of your like before returning the context.

                  以下代码成功地将所有上下文的平滑设置为 false:

                  The following piece of code successfully sets the smoothing to false for all your contexts :

                  (很明显,它应该在调用 getContext 之前运行).

                  (it should, quite obviously, be run before any call to getContext).

                  // save old getContext
                  var oldgetContext = HTMLCanvasElement.prototype.getContext ;
                  
                  // get a context, set it to smoothed if it was a 2d context, and return it.
                  function getSmoothContext(contextType) {
                    var resCtx = oldgetContext.apply(this, arguments);
                    if (contextType == '2d') {
                     setToFalse(resCtx, 'imageSmoothingEnabled');
                     setToFalse(resCtx, 'mozImageSmoothingEnabled');
                     setToFalse(resCtx, 'oImageSmoothingEnabled');
                     setToFalse(resCtx, 'webkitImageSmoothingEnabled');  
                    }
                    return resCtx ;  
                  }
                  
                  function setToFalse(obj, prop) { if ( obj[prop] !== undefined ) obj[prop] = false; }
                  
                  // inject new smoothed getContext
                  HTMLCanvasElement.prototype.getContext = getSmoothContext ;
                  

                  Rq 你可以在你的"getContext 中做任何事情.我使用它在上下文中复制画布的宽度、高度,以便在没有 DOM 访问的情况下将它们放在手边.

                  Rq that you can do anything in 'your' getContext. I use it to copy canvas's width, height on the context to have them at hand with no DOM access, among other things.

                  这篇关于在多个画布上默认禁用 imageSmoothingEnabled的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  How does object-fit work with canvas element?(对象适合如何与画布元素一起使用?)
                  How to make rooftext effect and valley text effect in HTML5 (or Fabric.js)(如何在 HTML5(或 Fabric.js)中制作屋顶文字效果和山谷文字效果)
                  Draw border around nontransparent part of image on canvas(在画布上的图像不透明部分周围绘制边框)
                  dragging and resizing an image on html5 canvas(在 html5 画布上拖动图像并调整其大小)
                  What#39;s the difference between a boolean as primitive and a boolean as property of an object?(作为原始对象的布尔值和作为对象属性的布尔值有什么区别?)
                  I want to do animation of an object along a particular path(我想沿特定路径对对象进行动画处理)
                  <legend id='S9oML'><style id='S9oML'><dir id='S9oML'><q id='S9oML'></q></dir></style></legend>
                    <tbody id='S9oML'></tbody>

                  <tfoot id='S9oML'></tfoot>

                    • <bdo id='S9oML'></bdo><ul id='S9oML'></ul>

                          <i id='S9oML'><tr id='S9oML'><dt id='S9oML'><q id='S9oML'><span id='S9oML'><b id='S9oML'><form id='S9oML'><ins id='S9oML'></ins><ul id='S9oML'></ul><sub id='S9oML'></sub></form><legend id='S9oML'></legend><bdo id='S9oML'><pre id='S9oML'><center id='S9oML'></center></pre></bdo></b><th id='S9oML'></th></span></q></dt></tr></i><div id='S9oML'><tfoot id='S9oML'></tfoot><dl id='S9oML'><fieldset id='S9oML'></fieldset></dl></div>
                        1. <small id='S9oML'></small><noframes id='S9oML'>