找回密码
 立即注册

QQ登录

只需一步,快速开始

Joky

注册会员

2

主题

5

帖子

70

积分

注册会员

积分
70
最新发帖
Joky
注册会员   /  发表于:2016-4-26 17:03  /   查看:3099  /  回复:3
自定义的表格中,canvas绘制的dom 怎样赋到单元格中,如下图 blob497749022.png
blob719900817.png

3 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-26 17:48:44
沙发
应该是ctx drawImage

img.onload = function () {
  ctx.drawImage(img, 0, 0);
  DOMURL.revokeObjectURL(url);
}
回复 使用道具 举报
Joky
注册会员   /  发表于:2016-4-26 17:58:38
板凳
dexteryao 发表于 2016-4-26 17:48
应该是ctx drawImage

img.onload = function () {

已经改了,但是单元格中仍然没显示出绘制的内容
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-27 10:00:27
地板
因为 image 的onload 是异步事件,所以这里需要将img缓存,然后图片加载后重新绘制下
  1. if (!ctx) {
  2.                 return;
  3.             }
  4.             var DOMURL = window.URL || window.webkitURL || window;
  5.             var cell = context.sheet.getCell(context.row, context.col);
  6.             var img = cell.tag();
  7.             if (img) {
  8.                 ctx.save();
  9.                 ctx.rect(x, y, w, h);
  10.                 ctx.clip();
  11.                 ctx.drawImage(img, x + 2, y + 2)
  12.                 DOMURL.revokeObjectURL(url);
  13.                 ctx.restore();
  14.                 cell.tag(null);
  15.                 return;
  16.             }

  17.             var data = '<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200">' +
  18.                        '<foreignObject width="100%" height="100%">' +
  19.                        '<div xmlns="http://www.w3.org/1999/xhtml" style="font-size:40px">' +
  20.                          '<em>I</em> like' +
  21.                          '<span style="color:white; text-shadow:0 0 2px blue;">' +
  22.                          'cheese</span>' +
  23.                        '</div>' +
  24.                        '</foreignObject>' +
  25.                        '</svg>';


  26.             var img = new Image();
  27.             var svg = new Blob([data], {type: 'image/svg+xml;charset=utf-8'});
  28.             var url = DOMURL.createObjectURL(svg);

  29.             cell.tag(img);
  30.             img.onload = function () {
  31.                 context.sheet.repaint(new context.sheet.repaint(new GcSpread.Sheets.Rect(x, y, w, h));
  32.             }
  33.             img.src = url;
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部