欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript?Canvas實現(xiàn)高清繪制效果

 更新時間:2023年06月08日 16:05:16   作者:格斗家不愛在外太空沉思  
在我們?nèi)粘@L制canvas的時候都不可避免的遇到一個問題,那就是canvas繪制出來的東西可能會有模糊,所以本文為大家準(zhǔn)備了解決canvas繪制模糊的方法,希望對大家有所幫助

canvas繪制模糊

在我們?nèi)粘@L制canvas的時候都不可避免的遇到一個問題,那就是canvas繪制出來的東西可能會有模糊發(fā)虛

為什么會模糊呢?那是因為沒有考慮到DPR(Device Pixel Ratio),叫做設(shè)備像素比

什么是設(shè)備像素比,例如你的電腦是1920 * 1280的,那就是橫向有1920個像素,縱向有1280個像素,那么是否我們在css里設(shè)置的像素就是我們看到的像素,其實我們的瀏覽器都有縮放,

例如一個元素設(shè)置了500 * 500的像素,而瀏覽器的縮放倍率為1.5倍,說明屏幕放大了1.5倍,縮放倍率可以通過window.devicePixelRatio獲取,縮放倍率的大小取決于你的屏幕有多高清,元素占用 500 * 500個像素的時候是清晰的,但是屏幕放大了1.5倍導(dǎo)致占用了750 * 750個像素就導(dǎo)致不清晰了,所以使用canvas繪制的時候就會產(chǎn)生這樣一個問題

解決canvas繪制模糊

有個這個縮放倍率之后就可以對canvas進(jìn)行操作,將canvas的放大到寬高乘以縮放倍率,再通過css將寬高修改回原來的大小,這樣canvas繪制出來就是高清的,不過canvas里的內(nèi)容也會被縮放,因此想保持原來的比例,就要將canvas進(jìn)行同等比例的放大或者縮小

//修改前
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");

ctx.beginPath();
ctx.lineWidth = 10;
ctx.strokeStyle = "orange";
ctx.moveTo(100, 100);
ctx.lineTo(400, 400);
ctx.stroke();
ctx.closePath();
//修改后
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
// 獲取縮放倍率
const getPixelRatio = (context) => {
return window.devicePixelRatio || 1;
};
const ratio = getPixelRatio();
// 保存原來的寬高
const oldWidth = canvas.width;
const oldHeight = canvas.height;
// canvas畫布進(jìn)行放大
canvas.width = canvas.width * ratio;
canvas.height = canvas.height * ratio;
// 在css里將寬高設(shè)置為原來的大小
canvas.style.width = oldWidth + "px";
canvas.style.height = oldHeight + "px";
// 考慮到內(nèi)容的縮放,將ctx縮放
ctx.scale(ratio, ratio);
ctx.beginPath();
ctx.lineWidth = 10;
ctx.strokeStyle = "orange";
ctx.moveTo(100, 100);
ctx.lineTo(400, 400);
ctx.stroke();
ctx.closePath();

效果圖:

到此這篇關(guān)于JavaScript Canvas實現(xiàn)高清繪制效果的文章就介紹到這了,更多相關(guān)Canvas高清繪制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • jquery.boxy插件的iframe擴展代碼

    jquery.boxy插件的iframe擴展代碼

    jquery.boxy插件的iframe擴展
    2010-07-07
  • jQuery控制TR顯示隱藏的幾種方法

    jQuery控制TR顯示隱藏的幾種方法

    使用id,這個方法可以在生成html的時候動態(tài)設(shè)置tr的id,也是用得最多最簡單的一種,其他方法祥看本文
    2014-06-06
  • jquery利用ajax調(diào)用后臺方法實例

    jquery利用ajax調(diào)用后臺方法實例

    這篇文章介紹了jquery利用ajax調(diào)用后臺方法實例,有需要的朋友可以參考一下
    2013-08-08
  • 基于JavaScript如何實現(xiàn)ajax調(diào)用后臺定義的方法

    基于JavaScript如何實現(xiàn)ajax調(diào)用后臺定義的方法

    由于ajax的獨特優(yōu)勢,使得它在當(dāng)前大量網(wǎng)站得到了廣泛的應(yīng)用,下面就介紹一下ajax如何調(diào)用后臺定義的函數(shù),對ajax調(diào)用后臺方法相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12
  • JQuery獲取樣式中的background-color顏色值的問題

    JQuery獲取樣式中的background-color顏色值的問題

    用JQuery獲取樣式中的background-color的值時發(fā)現(xiàn)在獲取到的顏色值在IE中與Chrome、Firefox顯示的格式不一樣,經(jīng)搜索找到了下段代碼可解決此問題,感興趣的朋友可以參考下
    2013-08-08
  • 最新評論