请选择 进入手机版 | 继续访问电脑版

jackming

初级会员

41

主题

78

帖子

307

积分

初级会员

积分
307
jackming
初级会员   /  发表于:2020-2-13 11:29  /   查看:5067  /  回复:5
1金币
本帖最后由 jackming 于 2020-2-13 15:42 编辑
  1. // 重写Base类型
  2.     var CustomBase = spreadNS.CellTypes.Base;

  3.     var oldPaint = spreadNS.CellTypes.Base.prototype.paint;

  4.     CustomBase.prototype.paint = function (context, value, x1, y1, a1, b1, style, ctx) {
  5.         if (!context) {
  6.             return;
  7.         }
  8.         if(this.showEffect){
  9.             context.save();
  10.             let base = a1 > b1 ? b1 / 2 : a1 / 2;
  11.             context.beginPath();
  12.             context.moveTo(x1 + a1, y1);
  13.             context.lineTo(x1 + a1, y1 + base);
  14.             context.lineTo(x1 + a1 - base, y1);

  15.             context.fillStyle ='red';
  16. // context.backgroundImage = 'http://a3.att.hudong.com/68/61/300000839764127060614318218_950.jpg'
  17.             context.fill();
  18.             context.closePath();
  19.             context.restore();
  20.         }
  21.         oldPaint.apply(this, [context, value, x1, y1, a1, b1, style, ctx]);
  22.     };
复制代码
能不能帮忙画一个旗子(三角形+一竖,最简单那种),水平垂直居中万分感谢
参考的这个 https://gcdn.grapecity.com.cn/showtopic-51177-1-116.html

最佳答案

查看完整内容

https://www.grapecity.com/spreadjs/docs/v13/online/SpreadJS~GC.Spread.Sheets.CellTypes.Base~paint.htmlpaint方法的API文档 有解释每个参数含义,另外这个绘制是用canvas来绘制的图形,您可以搜索canvas 的绘图方法,可以绘制您要的形状, 禁用单元格可以用表单保护来实现: https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/worksheet/protection/purejs 设置sheet.options.isProtected = true; 再锁 ...

5 个回复

最佳答案
最佳答案
Fiooona
论坛元老   /  发表于:2020-2-13 11:29:43
来自 6#
https://www.grapecity.com/spread ... ase~paint.htmlpaint方法的API文档 有解释每个参数含义,另外这个绘制是用canvas来绘制的图形,您可以搜索canvas 的绘图方法,可以绘制您要的形状,
禁用单元格可以用表单保护来实现:
https://demo.grapecity.com.cn/sp ... t/protection/purejs

设置sheet.options.isProtected = true; 再锁定单元格,参考下面的文章
https://gcdn.grapecity.com.cn/showtopic-58249-1-1.html
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-2-13 17:52:29
2#
可以说下您在什么业务场景下要用这种自定义单元格吗?

您是想要这样的一个角标?说下再具体的需求,可以给您写个简单的例子

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
jackming
初级会员   /  发表于:2020-2-13 18:20:07
3#
本帖最后由 jackming 于 2020-2-13 18:22 编辑
Fiooona 发表于 2020-2-13 17:52
可以说下您在什么业务场景下要用这种自定义单元格吗?

您是想要这样的一个角标?说下再具体的需求,可以 ...

业务是这是一个审核列表,我们想要把已经审核的记录,在那一列用一个旗子标记出来(现在是用的你们这个角标),然后最好可以让这个单元格禁用,没有审核过的,还是为一个多选框(已经实现)


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-2-14 10:06:22
4#
本帖最后由 Fiooona 于 2020-2-14 10:08 编辑


  1. CustomBase.prototype.paint = function (context, value, x1, y1, a1, b1, style, ctx) {
  2.     if (!context) {
  3.         return;
  4.     }
  5.         context.save();
  6.         let base = a1 > b1 ? b1 / 2 : a1 / 2;
  7.         context.beginPath();
  8.         context.moveTo((x1 + a1)/2, y1);
  9.         context.lineTo((x1 + a1)/2, y1+b1);
  10.         context.lineTo((x1 + a1)/2, y1+base);
  11.         context.lineTo((x1 + a1)/2+base, y1+base/2);
  12.         context.strokeStyle = 'red' ;  //设置线的颜色状态
  13.         context.fillStyle ='red';
  14.         context.stroke();  
  15.         context.fill();
  16.         context.closePath();
  17.         context.restore();
  18.     oldPaint.apply(this, [context, value, x1, y1, a1, b1, style, ctx]);
  19. };
复制代码

https://www.grapecity.com/spreadjs/docs/v13/online/SpreadJS~GC.Spread.Sheets.CellTypes.Base~paint.htmlpaint方法的API文档,可以参考

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
jackming
初级会员   /  发表于:2020-2-14 14:41:16
5#
Fiooona 发表于 2020-2-14 10:06
https://www.grapecity.com/spreadjs/docs/v13/online/SpreadJS~GC.Spread.Sheets.CellTypes.Base~pa ...

这个旗子的大小怎么调整呢?另外设置为旗子的单元格能设置禁用吗?感谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部