如何在Canvas上放置图片

时间:2017-11-06 23:29:58

标签: javascript html html5 function canvas

我一直试图让我的画布上出现一个图像,我已经画了形状,但我还没有能够让它上班。这里有一个类似的问题,但我尝试这样做,它并没有为我工作。我真的不在乎画布上出现的图片,只要我能真正得到它。此外,当我试图在画布上获取图像时,它将整个画布变成了黄色?我不知道为什么,但我花上的踏板是黄色的,我没有做任何改变我代码的那部分。



window.onload = function() {
 drawStar(100,100,5,30,15);
 TruckParts();
 Flower();
 colorDrop();
 Test1();

};


function drawStar(cx,cy,spikes,outerRadius,innerRadius){
	    // Get referene to canvas object
    var canvas  = document.getElementById("myCanvas");
    // Get reference to canvas drawing context
    var context = canvas.getContext("2d");
      var rot=Math.PI/2*3;
      var x=cx;
      var y=cy;
      var step=Math.PI/spikes;

      context.beginPath();
      context.moveTo(cx,cy-outerRadius)
      for(i=0;i<spikes;i++){
        x=cx+Math.cos(rot)*outerRadius;
        y=cy+Math.sin(rot)*outerRadius;
        context.lineTo(x,y)
          rot+=step
           x=cx+Math.cos(rot)*innerRadius;
              y=cy+Math.sin(rot)*innerRadius;
        context.lineTo(x,y)
           rot+=step
      }
      context.lineTo(cx,cy-outerRadius);
      context.closePath();
      context.lineWidth=5;
      context.strokeStyle='lightblue';
      context.stroke();
      context.fillStyle='grey';
      context.fill();
    }

  
    

 
function TruckParts(){ 
	    // Get referene to canvas object
    var canvas  = document.getElementById("myCanvas");
    // Get reference to canvas drawing context
    var context = canvas.getContext("2d");

    // Draw truck body
    context.beginPath();
    context.moveTo(125, 450);
    context.lineTo(200, 450);
    context.lineTo(250, 500);
    context.lineTo(290, 500);
    context.lineTo(290, 550);
    context.lineTo(25, 550);
    context.lineTo(25, 500);
    context.lineTo(250, 500);
    context.lineTo(110, 550);
    context.lineTo(200, 500);
    context.lineTo(125, 500);
    context.closePath();
    context.strokeStyle = "darkred";
    context.lineWidth = 1;
    context.stroke();
    context.fillStyle = "red";
    context.fill();

    //Draw truck tire1
    context.beginPath();
    context.arc(100,560,30,0,2*Math.PI);
    context.strokeStyle = "white";
    context.lineWidth = 1;
    context.stroke();
    context.fillStyle = "black";
    context.fill();

    //Draw truck tire 2
    
    context.beginPath();
    context.arc(230,560,30,0,2*Math.PI);
    context.strokeStyle = "white";
    context.lineWidth = 1;
    context.stroke();
    context.fillStyle = "black";
    context.fill();

    
};

//Draw Flower

function Flower(){
	// Get referene to canvas object
    var canvas  = document.getElementById("myCanvas");
    // Get reference to canvas drawing context
    var context = canvas.getContext("2d");
//stem
	context.beginPath();
	context.moveTo(449, 500);
	context.lineTo(449, 590);
	context.lineTo(453, 590);
	context.closePath();
	context.fillStyle = "green";
	context.fill();    
//top left pedal
    context.beginPath();
    context.arc(436,490,20,0,2*Math.PI);
    context.strokeStyle = "pink";
    context.lineWidth = 1;
    context.stroke();
    context.fillStyle = "yellow";
    context.fill();
//bottom right pedal
    context.beginPath();
    context.arc(465,512,20,0,2*Math.PI);
    context.strokeStyle = "pink";
    context.lineWidth = 1;
    context.stroke();
    context.fillStyle = "yellow";
    context.fill();
//top right pedal
    context.beginPath();
    context.arc(465,490,20,0,2*Math.PI);
    context.strokeStyle = "pink";
    context.lineWidth = 1;
    context.stroke();
    context.fillStyle = "yellow";
    context.fill();

//bottom left pedal
    context.beginPath();
    context.arc(436,512,20,0,2*Math.PI);
    context.strokeStyle = "pink";
    context.lineWidth = 1;
    context.stroke();
    context.fillStyle = "yellow";
    context.fill();
   
//center
	context.beginPath();
    context.arc(450,500,17,0,2*Math.PI);
    context.strokeStyle = "yellow";
    context.lineWidth = 1;
    context.stroke();
    context.fillStyle = "pink";
    context.fill();



};

//colors array
let colors = [

{colorname: "Red", color: "red" },

{colorname: "Blue", color: "blue"},

{colorname: "Green", color: "green"},

{colorname: "Purple", color: "purple"},

{colorname: "Pink", color: "pink"},
];

function colorDrop () {

let locaRef = document.querySelector("#colorDrop");

let option1 = document.createElement("option");
option1.value = 0;
option1.text = colors[0].colorname;

let option2 = document.createElement("option");
option2.value = 1;
option2.text = colors[1].colorname;

let option3 = document.createElement("option");
option3.value = 2;
option3.text = colors[2].colorname;

let option4 = document.createElement("option");
option4.value = 3;
option4.text = colors[3].colorname;

let option5 = document.createElement("option");
option5.value = 4;
option5.text = colors[4].colorname;



locaRef.appendChild(option1);
locaRef.appendChild(option2);
locaRef.appendChild(option3);
locaRef.appendChild(option4);
locaRef.appendChild(option5);
}

function handleDropdown(){
    //convert index to number
    let index = document.getElementById("colorDrop").value;
    	let setColor = colors[index].color;
};



//similar function that does not work for me
function Test1() {
    let context = document.getElementById('test1');
    if (context.getContext) {

        context = context.getContext('2d');

        //Loading of the home test image - img1
        let img1 = new Image();

        //drawing of the test image - img1
        img1.onload = function () {
            //draw background image
            context.drawImage(img1, 0, 0);
            //draw a box over the top
            context.fillStyle = "rgba(200, 0, 0, 0.5)";
            context.fillRect(0, 0, 500, 500);

        };

        img1.src = "puppy.jpg";
    }
}
&#13;
<!DOCTYPE html>
<html lang="en">
<head>
    
    <meta charset="utf-8">
  
    <link rel= 'stylesheet' href="p3.css">
    <script src="p3.js"> </script>
    <style>canvas { border: 1px solid black; }</style>  


 

</header>
<body>
    <canvas width= "1000" height= "600" id= "myCanvas">
    </canvas>
    </body>
    </html>
    <header>
    </header>
    <nav>
    </nav>
    <main>
    Enter text:
<input type="text">
<button type= "button">Press Button</button>

<select id="colorDrop" onchange="handleDropdown()">
<option  value="">Select a Color</option>

</select>

    </main>

    <footer>
    </footer>
    
</body>
</html>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

Test1函数中的以下行阻止您的代码工作......

let context = document.getElementById('test1');

当然需要改变......

let context = document.getElementById('myCanvas');

当我进行此更改时,您的代码可以正常工作,我为img1.src指定的图像显示在画布的左上角,并且还会出现一个50%alpha的填充矩形。