第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

第一種方法,只出現圖片的左上角部分

var??canvasWidth?=?1152;
var?canvasHeight?=?768;

var?myCanvas?=?document.getElementById("myCanvas");
var?context;
var?image?=?new?Image();
var?scaleRange?=?document.getElementById("scaleRange");
var?scale?=?scaleRange.value;

window.onload?=?function()?{
myCanvas.width?=?canvasWidth;
myCanvas.height?=?canvasHeight;
if?(myCanvas.getContext)?{
context?=?myCanvas.getContext("2d");
image.src?=?"../../images/img-lg.jpg";
image.onload?=?function()?{
//context.drawImage(image,0,0,canvasWidth,canvasHeight);
drawImageByScale(scale);
}
}

}


function?drawImageByScale(scale){
var?scaleImageWidth?=?canvasWidth?*?scale;
var?scaleImageHeight?=?canvasHeight?*?scale;
var?sx?=?scaleImageWidth/2?-?canvasWidth/2;
var?sy?=?scaleImageHeight/2?-?canvasHeight/2;
context.drawImage(image,sx,sy,canvasWidth,canvasHeight,0,0,canvasWidth,canvasHeight)
}


代碼里用的是老師的圖,用第一種方法實現的時候將scale設置為1.0的時候只出現了圖片的左上角的部分:

http://img1.sycdn.imooc.com//576509f60001f53b11930638.jpg

我個人認為這種實現方式是不是邏輯有點問題,因為image-lg.jpg的圖像素本來就是canvas大小的三倍大,當將scale設置為1.0時,最后一句畫圖的方法是:context.drawImage(image,0,0,canvasWidth,canvasHeight,0,0,canvasWidth,canvasHeight)
}

所以從原圖的0,0位置取得與canvas大小一樣的部分顯示在canvas中,所以出現了上圖的結果。

不知道理解的對不對,希望大神們可以指點一二~


正在回答

3 回答

老師的第一種方法實現的有問題,sx和sy不是從原圖上算得,是從放大后的圖片算得,可以照著上一節(jié)ppt里的圖,在紙上畫一畫,就能找到正確的實現。

不過我比較好奇,老師的代碼不正確,頁面的效果是怎么出來的?

0 回復 有任何疑惑可以回復我~
#1

希望林柚一健康快樂成長

老師用的圖就是放大之后的,所以能正確顯示
2022-09-21 回復 有任何疑惑可以回復我~

老師的第一種方法代碼有誤,你可以根據思路自己編寫出來。

0 回復 有任何疑惑可以回復我~

圖片處理思路是這樣的:

1、用context.drawImage( img , x , y , dw , dh)方法繪制圖像

2、讓圖像(放大或縮小后的圖)的中心與畫布中心重疊,即水平垂直居中——設置的top和left即為y,x。圖像的大小和畫布大小都已知,故很容易得到y(tǒng),x。

然后context.drawImage( image , x , y?, scaleImageWidth, scaleImageHeight);

你這里調用的方法是錯誤的?。。?/p>

1 回復 有任何疑惑可以回復我~
#1

lwhoho

他問第一種方法,你這個是第二種方法
2016-06-29 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

第一種方法,只出現圖片的左上角部分

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號