這裏我正在嘗試使用多個弧形來製作圓。像下面:加載時不顯示畫布圖像
var startAngle = 0;
var arc = Math.PI/6;
var ctx;
var leftValue=275;
var topValue=300; \t
\t
var wheelImg = "http://i.stack.imgur.com/wwXlF.png";
function drawWheelImg()
{
\t var canvas = document.getElementById("canvas");
\t if(canvas.getContext)
\t {
\t \t var outsideRadius = 260;
\t \t var textRadius = 217;
\t \t var insideRadius = 202;
\t \t ctx = canvas.getContext("2d"); \t
\t \t for(var i = 0; i < 12; i++)
\t \t {
\t \t \t var angle = startAngle + i * arc;
\t \t \t ctx.beginPath();
\t \t \t ctx.arc(leftValue, topValue, outsideRadius, angle, angle + arc, false);
\t \t \t ctx.arc(leftValue, topValue, insideRadius, angle + arc, angle, true);
\t \t \t ctx.fill();
\t \t \t ctx.closePath();
\t \t \t ctx.beginPath();
\t \t \t ctx.arc(leftValue, topValue, outsideRadius, angle, angle + arc, false);
\t \t \t ctx.shadowBlur=3;
\t \t \t ctx.shadowColor="#A47C15";
\t \t \t ctx.stroke();
\t \t \t ctx.closePath();
\t \t \t
\t \t \t ctx.save();
\t \t \t ctx.translate(leftValue + Math.cos(angle + arc/2) * textRadius,
\t \t \t \t \t \t topValue + Math.sin(angle + arc/2) * textRadius);
\t \t \t ctx.rotate(angle + arc/2 + Math.PI/2);
\t \t \t var imgName = wheelImg;
\t \t \t var img = new Image();
\t \t \t
\t \t \t img.src = wheelImg;
\t \t \t ctx.drawImage(img,-44, -25,50,40);
\t \t \t ctx.restore();
\t \t }
\t }
} \t
function spin()
{
\t drawWheelImg();
}
drawWheelImg();
<button class="btnSpin" onclick="spin();">Spin</button>
<canvas id="canvas" width="550" height="580"></canvas>
問題:
現在的問題是,當頁面加載我叫其繪製圓用弧到弧繪製圖像的功能。但那不起作用。
如果我在按鈕上點擊相同的功能,那麼它可以工作並顯示圖像。
我發現很多,但沒有得到解決方案。不知道爲什麼圖像不顯示在加載。
任何幫助將不勝感激。
任何控制檯錯誤,在瀏覽器的代碼? – Lal
您是否使用$(window).ready或onload事件調用函數? – Will
您必須等待圖像加載,然後才能渲染它。使用'image.onload'獲取圖片加載時的狀態,或者檢查'image.complete' – Blindman67