2013-12-10 14 views
12

以下のコードを使用して、スタイルをに設定しましたが、fillStyleを設定できません。ただし、strokeStylelineWidthは正常に動作しています。誰もがこれを手伝ってもらえますか?HTML5キャンバスの背景の塗りつぶし、線および不透明度を設定する

Init() 
{ 
    var can = byId('myCanvas'); 

     // get it's context 
     hdc = can.getContext('2d'); 

     hdc.strokeStyle = 'red'; 
     hdc.lineWidth = 2; 

     // Fill the path 
     hdc.fillStyle = "#9ea7b8"; 
     hdc.opacity = 0.2; 
     hdc.fill(); 
} 

// And call the drawPoly function with coordinates. 
function drawPoly(coOrdStr) { 
     var canvas = byId('myCanvas'); 
     hdc.clearRect(0, 0, canvas.width, canvas.height); 

     var mCoords = coOrdStr.split(','); 
     var i, n; 
     n = mCoords.length; 
     hdc.beginPath(); 
     hdc.moveTo(mCoords[0], mCoords[1]); 
     for (i = 2; i < n; i += 2) { 
      hdc.lineTo(mCoords[i], mCoords[i + 1]); 
     } 
     hdc.lineTo(mCoords[0], mCoords[1]); 
     hdc.stroke(); 

    } 

答えて

18
Init() 
{ 
    var can = document.getElementById('myCanvas'); 
    h = parseInt(document.getElementById("myCanvas").getAttribute("height")); 
    w=parseInt(document.getElementById("myCanvas").getAttribute("width")); 

    // get it's context 
    hdc = can.getContext('2d'); 

    hdc.strokeStyle = 'red'; 
    hdc.lineWidth = 2; 

    // Fill the path 
    hdc.fillStyle = "#9ea7b8"; 
    hdc.fillRect(0,0,w,h); 
    can.style.opacity = '0.2'; 
} 

style.heightまたはstyle.widthキャンバスでは動作しませんように注意してください。

12

スタイル/ CSS:

<style>#myCanvas { background-color: rgba(158, 167, 184, 0.2); }</style> 

のjQuery:

$('#myCanvas').css('background-color', 'rgba(158, 167, 184, 0.2)'); 

はJavaScript:

document.getElementById("myCanvas").style.backgroundColor = 'rgba(158, 167, 184, 0.2)'; 
+8

なぜjQueryを使用してCSSを追加するのですか? –

+0

キャンバスを使って作業する場合、通常はコードで外観を変更できる利点があります。あなたは正しいですが、それはプレーンなCSSで同じことをすることは完全に可能です。 – forsvunnet

+4

またはプレーンJavaScriptを使用しています... – aloisdg

2

実際には、style.heightstyle.widthはキャンバスで動作しますが、内部解像度を変更することなくサイズを変更することもできます。 400x300のゲームをフルスクリーンの1024x768キャンバスで実行しています。

+1

キャンバス要素プロパティの代わりにキャンバススタイルのプロパティを使用する場合は、幅と高さを比例して変更する必要があります。そうしないと、キャンバス上の図が水平または垂直に歪んでしまいます。 ;-) – markE

+0

まあ、時にはそれはまさにあなたが望むものです。 :) –

関連する問題