王厕所

coder的自我修养

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

没事看下HTML5,试了下drawImage方法

代码很简单:

<canvas id="canvas"></canvas>
<image src="001.jpg" />
<script type="text/javascript">
var canvas = document.getElementById("canvas")
var ctx = canvas.getContext("2d");
var img_url = '001.jpg';
if (ctx){
    var img = new Image();
    img.onload = function(){
        try {
            var w = img.width,h=img.height;
            canvas.style.width = w;
            canvas.style.height = h;
            ctx.drawImage(img,0,0);
        }

        catch (e) {alert(e.message)}      
    }
    img.src = img_url;
}
</script>

一开始画出来的图片死活都是变形的,还显示不全,后来直接给canvas加上比图片大的height与width属性才能正常显示图片,问题是多出来的部分就空白了。

经过几次尝试,最后终于发现问题所在。。。
改动代码如下:

<canvas id="canvas"></canvas>
<image src="001.jpg" />
<script type="text/javascript">
var canvas = document.getElementById("canvas")
var ctx = canvas.getContext("2d");
var img_url = '001.jpg';
if (ctx){
    var img = new Image();
    img.onload = function(){
        try {
            var w = img.width,h=img.height;
            canvas.width = w;
            canvas.height = h;
            ctx.drawImage(img,0,0);
        }

        catch (e) {alert(e.message)}      
    }
    img.src = img_url;
}
</script>

哈哈,不注意看是不是感觉其实没什么改动。。。

其实改的就是改变设置canvas宽与高的地方。。。用CSS来设置似乎不起作用,只有直接设置其height与width属性才行。


至于为什么就不得而知了,这里留个坑吧,等以后明白了再填上。。(就怕坑越挖越多。。)

drawImage参数设置如下:

drawImage(image, dx, dy)
drawImage(image, dx, dy, dw, dh)
drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh)

*第一个参数image可以用HTMLImageElement,HTMLCanvasElement或者HTMLVideoElement作为参数。
*dx、dy是image在canvas中定位的坐标值;
*dw、dh是image在canvas中即将绘制区域(相对dx和dy坐标的偏移量)的宽度和高度值;
*sx、sy是image所要绘制的起始位置;
*sw、sh是image所要绘制区域(相对image的sx和sy坐标的偏移量)的宽度和高度值

posted on 2012-07-02 09:52  王厕所  阅读(11142)  评论(1编辑  收藏  举报