校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 關于canvas繪制模糊問題的解決方法

關于canvas繪制模糊問題的解決方法

熱門標簽:惡搞電話機器人 智能電銷機器人被禁用了么 ok電銷機器人 高德地圖標注商戶怎么標 電話機器人技術 黃石ai電銷機器人呼叫中心 如何查看地圖標注 地圖標注軟件打印出來 欣鼎電銷機器人 效果

模糊原因

首先,需要理解canvas的展示機制。

<canvas id="map" width="375" height="667"></canvas>

我繪制了一張375px的canvas,iphone6的寬度也是375px,ok,canvas鋪滿了整個屏幕。

那么canvas的大小就是375px,canvas類似于圖片,一張375px的圖片,我們就把它當做是圖片來看就好了。我,尖沙咀段坤說的。

如果遇到了屏幕寬度400px的手機,那么圖片會 拉伸,canvas也會拉伸,拉伸則必然會模糊。

那么iphone6確實是375px寬度的手機,還是會出現模糊問題,為什么呢?手機端會存在高清屏的問題。也就是我們說的2倍屏或者3倍屏,也叫作屏幕的DPI。高清屏在繪制界面時,會把2px的寬度渲染成1px,也就達到了高清的效果。也就是說,我們在高清屏下看到的375px其實是750個像素點繪制出來的,canvas其實是375px被拉伸到了750px再展示出來的,拉伸則必然會模糊。

好了,模糊的原因知道了,其實就是高清屏所帶來的麻煩,怎么解決呢?

解決方法

如果是2倍屏,我們把設計圖上375px的canvas畫成750px不就解決了?

設置canvas樣式

這里我們不寫width和height,而直接寫style。把它看成是圖片,我們先不管圖片原寬高是多少,不管拉伸還是壓縮,直接讓他鋪滿整個屏幕。style里寫的寬高不是圖片的原寬高,也就是style里寫的寬高并不是canvas的真實寬高

<canvas id="map" style="width: 375px;height:330px;"></canvas>

設置canvas寬高

上面的style并不是canvas的真實寬高,那么我們如何設置它的寬高呢?

普通屏,2倍屏,3倍屏如果分別適配?

<canvas id="map" style="width: 375px;height:330px;"></canvas>

<script>
let canvas = document.querySelector('#map');
// 獲取到屏幕倒是是幾倍屏。
let getPixelRatio = function(context) {
  var backingStore = context.backingStorePixelRatio ||
    context.webkitBackingStorePixelRatio ||
    context.mozBackingStorePixelRatio ||
    context.msBackingStorePixelRatio ||
    context.oBackingStorePixelRatio ||
    context.backingStorePixelRatio || 1;
   return (window.devicePixelRatio || 1) / backingStore;
};
 // iphone6下得到是2 
const pixelRatio = getPixelRatio(canvas);
// 設置canvas的真實寬高
canvas.width = pixelRatio * canvas.offsetWidth; // 想當于 2 * 375 = 750 
canvas.height = pixelRatio * canvas.offsetHeight;
</script>

那么canvas的寬高就變成了下圖這樣,750寬度的canvas,如果你是2倍屏我就剛好能夠適應?。?!

設置后的寬高

開始畫點

比如,375的設計圖上,有一個半徑為2px的圓點,點的位置是x:100,y:100。

那么我們現在canvas的寬度是750,寬高變成了之前的2倍。為了視覺上位置保持不變,我們畫點的位置就應該是x:100*pixelRatio,y:100*pixelRatio。

完整代碼如下:

<canvas id="map" style="width: 375px;height:330px;"></canvas>

<script>
let canvas = document.querySelector('#map');
// 獲取到屏幕倒是是幾倍屏。
let getPixelRatio = function(context) {
  var backingStore = context.backingStorePixelRatio ||
    context.webkitBackingStorePixelRatio ||
    context.mozBackingStorePixelRatio ||
    context.msBackingStorePixelRatio ||
    context.oBackingStorePixelRatio ||
    context.backingStorePixelRatio || 1;
   return (window.devicePixelRatio || 1) / backingStore;
};
 // iphone6下得到是2 
const pixelRatio = getPixelRatio(canvas);
// 設置canvas的真實寬高
canvas.width = pixelRatio * canvas.offsetWidth; // 想當于 2 * 375 = 750 
canvas.height = pixelRatio * canvas.offsetHeight;

// 開始畫點
let ctx = canvas.getContext("2d");
ctx.beginPath();
 // 375設計圖上的位置和尺寸都應該*pixelRatio 因為我們現在的canvas是750
ctx.arc(100*pixelRatio, 100*pixelRatio, 2*pixelRatio, 0, 2 * Math.PI);
ctx.fillStyle = "#fff";
ctx.fill();
ctx.closePath();

// ...你的其他代碼
</script>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:金昌 中山 盤錦 赤峰 聊城 萍鄉 阿壩 綏化

巨人網絡通訊聲明:本文標題《關于canvas繪制模糊問題的解決方法》,本文關鍵詞  關于,canvas,繪制,模糊,問,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《關于canvas繪制模糊問題的解決方法》相關的同類信息!
  • 本頁收集關于關于canvas繪制模糊問題的解決方法的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    色系网站成人免费| 国产精品久久久久影院亚瑟 | 亚洲免费观看高清在线观看| eeuss鲁片一区二区三区| 中文字幕成人网| 色琪琪一区二区三区亚洲区| 亚洲自拍偷拍九九九| 日韩欧美一区电影| 久久99久久精品欧美| 久久先锋影音av鲁色资源| 国产成人h网站| 亚洲免费观看高清完整版在线| 欧美性猛交xxxxxxxx| 青青草伊人久久| 中文字幕欧美日韩一区| 色婷婷久久久综合中文字幕| 婷婷久久综合九色综合伊人色| 欧美v日韩v国产v| 99亚偷拍自图区亚洲| 亚洲午夜久久久久久久久电影网| 日韩免费看网站| 99国内精品久久| 日韩精品91亚洲二区在线观看| 久久久久久麻豆| 91色综合久久久久婷婷| 日韩电影在线观看一区| 国产清纯在线一区二区www| 欧美亚洲一区三区| 国产精品中文字幕一区二区三区| 亚洲精品v日韩精品| 欧美精品一区在线观看| 91玉足脚交白嫩脚丫在线播放| 麻豆专区一区二区三区四区五区| 亚洲色图都市小说| 日韩视频一区二区| 97精品超碰一区二区三区| 日韩av网站在线观看| 亚洲男人电影天堂| 精品国产乱码久久久久久1区2区 | 国产精品美女久久久久久2018| 蜜桃av一区二区在线观看| 欧美日韩中文字幕精品| 亚洲天天做日日做天天谢日日欢| 国产成人高清在线| 国产精品无遮挡| 成人h动漫精品| 国产午夜精品久久久久久免费视| 国产91清纯白嫩初高中在线观看 | 国产精品1区2区3区在线观看| 一本久道久久综合中文字幕| 亚洲激情六月丁香| 色婷婷综合久色| 日韩一区中文字幕| 欧美久久婷婷综合色| 天天综合网 天天综合色| 久久精品亚洲麻豆av一区二区| 亚洲一区二区三区在线看| 国产精品羞羞答答xxdd| 337p粉嫩大胆色噜噜噜噜亚洲| 激情深爱一区二区| 亚洲精品欧美综合四区| 亚洲福中文字幕伊人影院| 蜜桃久久久久久久| 日韩精品一区二区三区蜜臀 | 天天色综合天天| 一级特黄大欧美久久久| 成人欧美一区二区三区1314| 国产视频一区二区在线观看| 精品1区2区在线观看| 日韩午夜小视频| 欧美一区二区三区视频在线| 在线播放中文字幕一区| 欧美在线观看你懂的| 99re这里只有精品视频首页| 99精品久久久久久| 91免费版在线| 91在线视频免费91| 91麻豆自制传媒国产之光| 99国产精品99久久久久久| 97精品国产露脸对白| 色88888久久久久久影院按摩 | 538在线一区二区精品国产| 欧美美女一区二区在线观看| 8x8x8国产精品| 日韩免费视频一区二区| 日韩欧美成人一区| 久久久99久久| 久久久99精品免费观看不卡| 国产精品成人网| 亚洲欧美色图小说| 亚洲成人在线免费| 美女久久久精品| 国产91精品入口| 91免费视频网| 欧美丰满少妇xxxxx高潮对白| 日韩一区二区三区视频在线观看| 久久女同精品一区二区| 欧美高清在线视频| 亚洲欧美福利一区二区| 亚洲国产精品久久艾草纯爱 | 亚洲主播在线观看| 午夜亚洲福利老司机| 日韩一区欧美二区| 国内精品伊人久久久久av影院 | 国产欧美一区二区精品性色 | 国产网红主播福利一区二区| 亚洲色图视频免费播放| 国产综合色视频| 成人av在线一区二区| 欧美天天综合网| 久久午夜电影网| 亚洲男同性恋视频| 欧美a一区二区| 99久久99久久综合| 日韩一级成人av| 国产精品久久精品日日| 日韩福利电影在线| 99久久精品免费观看| 911国产精品| 国产精品国产三级国产有无不卡| 日本欧洲一区二区| 99视频热这里只有精品免费| 日韩一区二区电影在线| 中文字幕亚洲精品在线观看| 久久国产生活片100| 色94色欧美sute亚洲线路一ni | ww久久中文字幕| 一区二区不卡在线视频 午夜欧美不卡在| 日本91福利区| 色婷婷精品大在线视频| 久久亚洲精品小早川怜子| 天天色天天操综合| av中文字幕亚洲| 久久欧美一区二区| 日韩av一级电影| 在线观看日韩电影| 日本一区二区三区国色天香| 老鸭窝一区二区久久精品| 色哟哟国产精品免费观看| 欧美激情综合五月色丁香小说| 美国一区二区三区在线播放| 欧美亚洲高清一区| 国产精品美女久久福利网站| 国产一区二区看久久| 欧美电影精品一区二区| 亚洲一区二区黄色| 97成人超碰视| 国产精品理论片在线观看| 国内精品不卡在线| 91精品国产一区二区人妖| 亚洲一区二区在线播放相泽| 一本大道久久精品懂色aⅴ| 中文字幕精品一区二区精品绿巨人| 精品综合久久久久久8888| 欧美精品丝袜中出| 婷婷成人激情在线网| 欧美日韩综合一区| 亚洲福利国产精品| 欧美日韩亚洲另类| 午夜精品一区二区三区三上悠亚| 在线欧美日韩精品| 亚洲一区二区美女| 欧美日韩国产一区| 亚洲最新视频在线观看| 色欧美乱欧美15图片| 一区二区三区蜜桃| 欧美图区在线视频| 日韩精品成人一区二区三区| 911精品产国品一二三产区 | 国产精品中文字幕欧美| 久久中文娱乐网| 国产精品一级黄| 欧美国产日韩一二三区| 福利电影一区二区| 亚洲三级电影网站| 欧美午夜精品久久久久久超碰| 亚洲第一会所有码转帖| 欧美一区二区三级| 国产一区二区三区免费| 久久一区二区视频| 国产电影一区在线| 中文字幕视频一区二区三区久| 欧美日本一区二区三区四区 | 欧美一级在线观看| 蜜桃av一区二区| 久久久精品黄色| 色综合视频在线观看| 亚洲一区电影777| 日韩视频一区二区三区| 国产成人综合亚洲91猫咪| 国产精品麻豆99久久久久久| 在线看不卡av| 精品影院一区二区久久久| 欧美激情一二三区| 欧美三日本三级三级在线播放| 蜜臀久久99精品久久久久久9| 久久久www成人免费毛片麻豆| 91免费版在线| 久久se精品一区二区| 国产精品乱码一区二区三区软件 |