canvas小图123

1 绘制扇形图

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
    <title></title>
    <style type="text/css">
        *{
            margin: 0;
            padding: 0;
        }
        div{
            width: 600px;
            height: 600px;
            margin:30px auto;
            border:1px solid orange;
        }
    </style>
</head>
<body>
    <div>
        <canvas id="canvas"></canvas>
    </div>
<script type="text/javascript">
    var canvas = document.getElementById("canvas");
    var ctx = canvas.getContext("2d");
    canvas.width = 600;
    canvas.height = 600;
    var data = [
        {
            value:0.6,
            color:"lightcoral",
            text:"记者"
        },{
            value:0.1,
            color:"lightblue",
            text:"naive"
        },{
            value:0.1,
            color:"lightgreen",
            text:"simple"
        },{
            value:0.2,
            color:"darkgray",
            text:"跑得快"
        }
    ];
    //先画一个扇形
    //圆心就是300  300
    //半径就是200
    //start = 0 ,end = Math.PI*2*0.2
    //我们的文字放置位置
    //x=300+200*Math.cos(0.1*Math.PI*2)
    //y=300+200*Math.sin(0.1*Math.PI*2)

    // ctx.textAlign ="left";
    // ctx.textBaseLine = "top";
    var start=0;
    var end = 0;
    var text = 0;
    var r = 200;
    for(var i=0;i<data.length;i++){
        ctx.beginPath();
        ctx.moveTo(300,300);
        end = start+data[i].value*2*Math.PI;
        ctx.arc(300,300,r,start,end);
        ctx.closePath();
        ctx.fillStyle=data[i].color;
        ctx.fill();
        ctx.stroke();
        // ctx.font="16px 微软雅黑";
        text = start + data[i].value/2*2*Math.PI;
        var x = 300+r*Math.cos(text);
        var y = 300+r*Math.sin(text);

        if(x>300){
            ctx.textAlign="start";
            // x=x+10;
        }else{
            ctx.textAlign="end";
            // x=x-10;
        }
        if(y>300){
            ctx.textBaseLine = "top";
            y=y+10;
        }else{
            ctx.textBaseLine = "bottom";
            // y=y-10
        }
        ctx.fillText(data[i].text,x,y);
        start = end;
    }
</script>
</body>
</html>

2 小光点

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>绘制彩色光点</title>
</head>
<body>
<canvas id="canvas">
</canvas>
<script type="text/javascript">
    var canvas = document.getElementById("canvas");//获得画布
    var ctx = canvas.getContext("2d");//得到canvas的上下文对象(获得画布控制权)
    canvas.width = 500;
    canvas.height= 500;
    canvas.style.background = "white";
    canvas.style.border = "1px solid darkgray";
    canvas.style.position="relative";
    canvas.style.left="400px";
    canvas.onmousedown=function(e){
        var x = e.clientX;
        var y = e.clientY+this.offsetTop;
            canvas.onmousemove=function(e){
                var moveX = e.clientX;
                var moveY = e.clientY+this.offsetTop;
                ctx.beginPath();
                ctx.arc(x-this.offsetLeft,y,moveX-x,2*Math.PI,false);
                ctx.closePath();
                var color = "rgba("+Math.ceil(Math.random()*255)+","+Math.ceil(Math.random()*255)+","+Math.ceil(Math.random()*255)+",1)";
                ctx.fillStyle = color;
                ctx.fill();
            }
            canvas.onmouseup=function(){
                canvas.onmousemove =null;
            }
    }

</script>
</body>
</html>

3 刮奖功能

刮出一个谢字就可以,何必要把谢谢惠顾四个字都刮出来才肯放手呢

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>擦除效果</title>
    <style type="text/css">
        *{
            margin: 0;
            padding: 0;
        }
        div{
            width: 500px;
            margin:50px auto;
            /*border:1px solid #ccc;*/
           background-image: url(img/starks.jpg);
        }
    </style>
</head>
<body>
<div>
    <canvas id="canvas">

    </canvas>
</div>
<script type="text/javascript">
    var canvas = document.getElementById("canvas");
    var ctx = canvas.getContext("2d");
    canvas.width = 500;
    canvas.height= 500;
    ctx.fillRect(0, 0, 500, 500)

    //擦除功能:手动(通过鼠标拖放)绘制一个矩形,绘制出的矩形里面的内容被清除
    canvas.onmousedown=function(e){
        var e = e ||window.event;
        // console.log(e);
        if(e.button==0){
            var startX = e.clientX - canvas.offsetLeft;
            var startY = e.clientY - canvas.offsetTop;
            // console.log(canvas.offsetTop)
            canvas.onmousemove=function(e){
                var e = e ||window.event;
                var endX = e.clientX - canvas.offsetLeft;
                var endY = e.clientY - canvas.offsetTop;
                var width = endX- startX;
                var height = endY - startY ;
                ctx.clearRect(startX,startY,width,height);
            }
            canvas.onmouseup=function(){
                if(e.button==0){
                    canvas.onmousemove=null;
                }
            }
        }

    }
</script>
</body>
</html>
时间: 2024-10-21 03:32:47

canvas小图123的相关文章

canvas水波纹效果

先看效果 演示效果 自然界中水波纹效果十分麻烦,我这里只是根据水波纹的几个特性,在理想环境下模拟水波纹的扩散效果. 这里应用到的属性有:扩散.波动.折射. 扩散:很好理解,水波纹会从触发原点开始向周围扩散 波动:水波纹就一直波,在切面上观看,就是一个正弦函数的波形图 折射:光在不同介质中传播速度不同导致出现折射效果. 如果在平静条件下,在垂直方向上看水底事物,很正常. 在波动条件下,因为水的上下波动,导致垂直方向上看到的水底物体,因为波的角度不同,导致水下事物反射的光到人眼的时候,出现一些偏移.

canvas drawText 如何居中显示。

网上很多关于将text居中到某个矩形或者bitmap中的例子,但是我觉得很多是错的,特别是一些人希望通过观察然后设置某个偏移量让它尽可能居中,我觉得这是再误人子弟.android连text居中都做不到的话,那它就改退出这个市场了. 废话不多说本人是从一篇文章中得到的启示,作为尊重他人我附上这篇文章,供大家参考.http://www.doc88.com/p-3953907358643.html 当然这篇文章讲的不是很详细,特别是对baseline这个值的求法是对的但是表达形式上我觉得不是很满意,所

实用控件分享:自定义逼真相机光圈View

最近手机界开始流行双摄像头,大光圈功能也应用而生.所谓大光圈功能就是能够对照片进行后期重新对焦,其实现的原理主要是对拍照期间获取的深度图片与对焦无穷远的图像通过算法来实现重新对焦的效果. 在某双摄手机的大光圈操作界面有个光圈的操作图标,能够模拟光圈调节时的真实效果,感觉还不错,于是想着实现该效果.现在把我的实现方法贡献给大家,万一你们公司也要做双摄手机呢?( ̄┰ ̄*) 首先,百度一下光圈图片,观察观察,就可以发现其关键在于计算不同的光圈值时各个光圈叶片的位置.为了计算简便,我以六个直边叶片的光圈

Web3D编程入门总结——面向对象的基础Web3D框架

本篇主要通过分析Tony Parisi的sim.js库(原版代码托管于:https://github.com/tparisi/WebGLBook/tree/master/sim),总结基础Web3D框架的编写方法.在上一篇的基础上,要求读者具有简短英文阅读或者查字典的能力. 限于水平和时间,本文难免出现错误与遗漏,您在阅读过程中如果遇到错误或者疑问请在评论区中指出,我将尽快回复. 为提高JavaScript编程效率,建议使用WebStorm工具进行网页程序编写,WebStorm官网:http:/

中国海域系统源代码

<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="inin1(),init(),initCollections(),startTimer(),complete(),success(),inin()"  layout="ab

modernizr.js

1.判断浏览器是否支持 h5 if(Modernizr.canvas){ alert(123); }else{ alert(321); } 2.判断浏览器是否支持 canvas function supert_canvas(){ if(Modernizr.canvas){ alert("是"); }else{ alert("否"); } } 或者 function supert_canvas(id){ return !! document.getElementByI

2015-05-29股票资料

代码 名称 股价 总市值 所属行业 6日涨幅% 6日换手% 总股本 601628 中国人寿 35.26 9966亿 保险 -3.85 2.77 283亿 601318 中国平安 85.44 7809亿 保险 -1.34 18.87 91.4亿 601601 中国太保 32.23 2921亿 保险 -3.85 10.88 90.6亿 601336 新华保险 58.81 1835亿 保险 -4.53 14.57 31.2亿 600660 福耀玻璃 16.43 412亿 玻璃陶瓷 1.55 23.92

canvas的api

Canvas API(画布)用于在网页实时生成图像,并且可以操作图像内容,基本上它是一个可以用JavaScript操作的位图(bitmap).使用前,首先需要新建一个canvas网页元素. 1 2 3 4 <canvas height="200" id="myCanvas" width="400">     您的浏览器不支持canvas! </canvas> <!-- 如果浏览器不支持这个API,则就会显示canva

最近学习canvas,写了个小的效果。

1 body { 2 margin: 0; 3 } 4 #game { 5 background: url("../images/back.png") repeat; 6 } 7 .wuli{ 8 position: absolute; 9 min-width: 200px; 10 height: 33px; 11 background: #355596; 12 opacity: 0.6; 13 filter:alpha(opacity = 60); 14 border-radius: