图片的坐标为什么变了

来源:6-7 完成案例文字图片显示和变换

光aaaaand影

2019-08-17 20:24:12

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <link rel="stylesheet" href="css/style.css"/>
    </head>
    <body>
        <!-- 左边 -->
        <div class="left-div">
            <div class="line">
                <input id="name" type="text" placeholder="姓名"/>
            </div>
            <div class="line">
                <input id="address" type="text" placeholder="地址"/>
            </div>
            <div class="line">
                <input id="job" type="text" placeholder="职业"/>
            </div>
            <div class="line">
                <input id="slogan" type="text" placeholder="口号"/>
            </div>
            <div class="line">
                <button id="createBtn">生成名片</button>
            </div>
        </div><!--left-div  -->
        <!-- 右边 -->
        <div class="right-div">
            <canvas id="animCanvas" width="600" height="100">
                您的浏览器不支持Canvas,请升级浏览器
            </canvas>
        </div>
        <script type="text/javascript" src="js/script.js"></script>
    </body>
</html>
* {
  margin: 0;
  padding: 0;
}
html, body {
  height: 100%;
}
.left-div {
  width: 30%;
  height: 100%;
  float: left;
  background: #a4a296;
}
.line {
  text-align: center;
  margin-top: 30px;
}
.line:first-child {
  margin-top: 200px;
}
.line span {
  color: white;
}
.line input {
  width: 300px;
  height: 30px;
  border-radius: 15px;
  padding-left: 15px;
  outline: none;
  border: none;
}
.line button {
  width: 100px;
  height: 30px;
  outline: none;
  border: none;
  background: #222;
  color: #DDD;
  cursor: pointer;
  position: relative;
  border-radius: 15px;
}
.line button:hover {
  background: #000;
  color: #FFF;
}
.line button:active {
  left: 1px;
  top: 1px;
}
.right-div {
  width: 70%;
  height: 100%;
  float: left;
  background: #eee9d3;
  text-align: center;
  position: relative;
}
.right-div canvas {
  position: absolute;
  top: 200px;
  left: 50%;
  margin-left: -300px;
}
#cardCanvas {
  display: none;
}
var canvas=document.getElementById("animCanvas");
var ctx=canvas.getContext("2d");
var name="请输入姓名",
    address="请输入地址",
    job="请输入职业",
    slogan="请输入口号";

//绘制画布的函数
var draw=function(){
    //渐变
    var lg=ctx.createLinearGradient(0,0,600,100);
    lg.addColorStop(0.5,"#000");
    lg.addColorStop(1,"rgb(133,133,133)");
    ctx.fillStyle=lg;
    ctx.fillRect(0,0,600,100);
    // 引入logo
    var img=new Image();
    img.src="img/logo.png";
    img.onload=function(){
        ctx.drawImage(img,10,10);
    }
    // 调用绘制文字的函数
    text(name,address,job,slogan);
}
//绘制文字的函数
var text=function(str1,str2,str3,str4){
    ctx.font= "bold 30px sans-serif";
    ctx.fillStyle="#FFF";
    ctx.fillText(str1,105,35);
    ctx.font= "bold 22px sans-serif";
    ctx.fillText(str2,105,60);
    ctx.fillText(str3,105,85);
    
    ctx.translate(370,70);
    ctx.rotate(-Math.PI/12);
    ctx.fillStyle="rgba(255,255,255,0.7)";
    ctx.fillText(str4,0,0);
}
// 点击按钮,提交信息
var btn=document.getElementById("createBtn");
btn.onclick=function(){
    canvas.height=canvas.height;//清除画布
    name=document.getElementById("name").value,
    address=document.getElementById("address").value,
    job=document.getElementById("job").value;
    draw();
}
//第一次绘制
draw();

老师,我在“绘制文字的函数”里将str4平移与旋转,为什么图片也跟着平移和旋转了,图片的引入在绘制文字之前,按理说不该受影响啊

写回答

1回答

好帮手慕码

2019-08-18

同学你好!

是被影响到了,因为onload事件是在图片加载完之后执行的,可能在旋转之后,所以logo图片就进行了旋转。如果想要口号进行旋转,可以使用save方法保存之前的状态,在绘制口号之前旋转,参考:

http://img.mukewang.com/climg/5d58c6870001f4f706660471.jpg

效果:

http://img.mukewang.com/climg/5d58c6980001acfb05250148.jpg

如果帮助到了你,欢迎采纳,祝学习愉快~

0

0 学习 · 4826 问题

查看课程