问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

html5 canvas上面画的图形,有没有类似于ID,Value这种属性?(我需要存放...

发布网友 发布时间:2022-05-13 09:35

我来回答

2个回答

热心网友 时间:2022-05-13 20:32

主要思想是借助Canvas自己的API - toDataURL()来实现,整个实现

<html>  
<meta http-equiv="X-UA-Compatible" content="chrome=1">  
<head>  
<script>  
        window.onload = function() {  
            draw();  
            var saveButton = document.getElementById("saveImageBtn");  
            bindButtonEvent(saveButton, "click", saveImageInfo);  
            var dlButton = document.getElementById("downloadImageBtn");  
            bindButtonEvent(dlButton, "click", saveAsLocalImage);  
        };  
            function draw(){  
                var canvas = document.getElementById("thecanvas");  
                var ctx = canvas.getContext("2d");  
                ctx.fillStyle = "rgba(125, 46, 138, 0.5)";  
                ctx.fillRect(25,25,100,100);   
                ctx.fillStyle = "rgba( 0, 146, 38, 0.5)";  
                ctx.fillRect(58, 74, 125, 100);  
                ctx.fillStyle = "rgba( 0, 0, 0, 1)"; // black color  
                ctx.fillText("Gloomyfish - Demo", 50, 50);  
            }  
              
            function bindButtonEvent(element, type, handler)  
            {  
                   if(element.addEventListener) {  
                      element.addEventListener(type, handler, false);  
                   } else {  
                      element.attachEvent('on'+type, handler);  
                   }  
            }  
              
            function saveImageInfo ()   
            {  
                var mycanvas = document.getElementById("thecanvas");  
                var image    = mycanvas.toDataURL("image/png");  
                var w=window.open('about:blank','image from canvas');  
                w.document.write("<img src='"+image+"' alt='from canvas'/>");  
            }  
  
            function saveAsLocalImage () {  
                var myCanvas = document.getElementById("thecanvas");  
                // here is the most important part because if you dont replace you will get a DOM 18 exception.  
                // var image = myCanvas.toDataURL("image/png").replace("image/png", "image/octet-stream;Content-Disposition: attachment;filename=foobar.png");  
                var image = myCanvas.toDataURL("image/png").replace("image/png", "image/octet-stream");   
                window.location.href=image; // it will save locally  
            }  
        </script>  
</head>  
<body bgcolor="#E6E6FA">  
    <div>  
        <canvas width=200 height=200 id="thecanvas"></canvas>  
        <button id="saveImageBtn">Save Image</button>  
        <button id="downloadImageBtn">Download Image</button>  
    </div>  
</body>  
</html>

追问又一个不看题就复制粘贴的,唉

追答哇哈哈~是的 还是得靠自己。你为canvas设置id,旁边放着一个输入框,点击事件之后获取输入框的输入的值作为ID呀,想输什么都随意

热心网友 时间:2022-05-13 21:50

老哥,解决了吗?我现在在研究这一块,求分享~~
看了一个上午, 想到一个思路,给图形数据的json的时候,在json里面添加id字段和text字段,text指向唯一id
var a = [
{"id":"1","x":"80","y":"70","width":"120","height":"70","text":"哈哈哈啊"},
];
ctx.fillStyle=red;
if(a['id']=1){
ctx.fillText=a['text'];
}
ctx.fillRect(a['x'],a['y'],a['width'],a['height']);

刚想到的, 还没尝试实现,思路应该没问题,数据量大的情况的下,就是一个循环,id从0开始,对应i。等于是把每个图形的识别字符放在json里面,需要的时候调用json对象,循环就行了。 例如点击某个块的时候,获取他的填充文字,就能对应到json对象的某个你需要的字段了。追问不好意思,都有点忘了当时的想法了。不过我们的需求可能还是有一定出入。我的图形数据并不是从json获取,而是动态的去画。(或许画完放入json,然后json字段设置ID、文本,通过图形位置数据去绑定也可以,但是这样要通过位置数据去匹配,ID的意义就不大了。问题本身还是因为canvas没有提供一个类似于ID的属性,那样才能绑定相对应的数据信息)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...地形、气候、河流、物产、经济发展状况、文物古迹、旅游资源等方面... 二本博士生好找工作吗(二表b是什么意思) 二表b大学是什么意思? 上海女明星有哪些 上海住了哪些明星 求那种感情强烈的小说,类似于 缺氧――和康巴男人的一夫多妻实验 那个... 像和市长千金爱上我相似的小说 【200分】寻找好看小说,都市类,像《和空姐同居的日子》差不多的小说... 推荐几部好看点的都市言情小说, 比如:《和空姐同居的日子》_百度... 求一个lp仿传奇单机版v3.05版的修改器下载地址! 二次房贷一定要买保险 不求上人读音谦逊 谦的拼音是什么 “谦逊”是什么意思? 谦逊读音是什么 谦逊啥意思? 谦逊的拼音 谦逊的拼音是什么 谦逊怎么读音 国庆档电影《攀登者》里没有女英雄,只有女麻烦精? 吴京和张译演的电影叫什么 从《攀登者》说起:登山如何成为中产阶级时尚? 瓦房店科目三考试内容 超人吹风机的集风嘴怎么拿下来 高中毕业生自我登记表 自我鉴定怎么写 高中毕业登记表中的“自我鉴定” 笔记本电脑电池寿命缩短 联想电脑最佳电池寿命怎么设置 雷纳鑫防丢手机充电器智能快充、固定安装价格多少固定安装一拖三多少钱一个 联通太平卡19A套餐流量超出后怎么收费? 露天种的蔬菜茄子茄子秧烂根烂苗天天下雨怎么处理? 茄子生厌了怎么办? 使用canvas绘制图形时,使用什么方法可以在当前属性中填入边框的颜色值... 番茄种植后有烂根怎么办? 进京72小时从那天开始算 施工单位项目经理岗位职责 ie 开发者工具功能不能用,按F12也出现,就是不能远着元素了 核酸检测72小时有效,时间怎么算?核酸检测 企业聘用残疾人或失业人员有什么税收减免或优惠政策吗? 成人教育怎么上课的?需要在学校上课吗? 小米2S刷了别的系统怎么还原以前MIUI系统啊? 期望理论、公平理论、强化理论分别有什么实践指导意义? 问一款摩托罗拉翻盖手机的型号 摩托罗拉翻盖手机哪个型号便宜又好用 摩托罗拉的手机型号 大概三年前的 翻盖的黑色的 这串是沉香吗,产地,品相怎么样 梦见被蜜蜂追,没被蛰但是脱身后找不到家了,最近生意不顺,有啥预兆呢? 测量风向人面向何方 做一个简易的风向风速仪需要哪些步骤? 做梦梦到死人的真实心理是什么?