亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

canvas繪制模糊

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

為什么會(huì)模糊呢?那是因?yàn)闆]有考慮到DPR(Device Pixel Ratio),叫做設(shè)備像素比

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

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

解決canvas繪制模糊

有個(gè)這個(gè)縮放倍率之后就可以對canvas進(jìn)行操作,將canvas的放大到寬高乘以縮放倍率,再通過css將寬高修改回原來的大小,這樣canvas繪制出來就是高清的,不過canvas里的內(nèi)容也會(huì)被縮放,因此想保持原來的比例,就要將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實(shí)現(xiàn)高清繪制效果的文章就介紹到這了,更多相關(guān)Canvas高清繪制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • jquery.boxy插件的iframe擴(kuò)展代碼

    jquery.boxy插件的iframe擴(kuò)展代碼

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

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

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

    jquery利用ajax調(diào)用后臺(tái)方法實(shí)例

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

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

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

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

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