找回密码
 立即注册

QQ登录

只需一步,快速开始

鸳鸯配2024

金牌服务用户

30

主题

163

帖子

413

积分

金牌服务用户

积分
413
鸳鸯配2024
金牌服务用户   /  发表于:2024-8-12 17:40  /   查看:1193  /  回复:14
在论坛里面没有找到相应的方法


img_v3_02dm_f57fdd92-7256-4f93-a921-ae899b9c833g.jpg359799193.png
点击图片是这样的。
想问下,如何通过单击和双击,有哪些事件,能够获取到相应的图片信息?

这个事件是获取不到的。
  1. GC.Spread.Sheets.Events.ClipboardPasting
复制代码


14 个回复

正序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-8-13 17:54:11
16#
给你发的事件中shape对象就是这个图片
接下来用startRow endRow startColumn endColumn方法就可以获取图片相关对应的单元格索引了。
你可以将自己搞定的方法跟这个比较一下,哪个方便用哪个
image.png491162719.png
image.png932263793.png
回复 使用道具 举报
鸳鸯配2024
金牌服务用户   /  发表于:2024-8-13 15:00:51
14#
本帖最后由 鸳鸯配2024 于 2024-8-13 15:30 编辑

这个自己搞定了。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-8-13 14:15:51
13#
鸳鸯配2024 发表于 2024-8-13 13:44
拿过来用后,报错
没有这个方法 shape.toImageSrc

我在之前给你提供的demo中添加了您添加图片的代码,测试后发现可以获取到图片信息,请您参考附件中的demo。
您使用的具体版本号是什么?我排查了下,17.1版本之前没有Shape:toImageSrc()接口。如果您的版本号在17.1之前可以升级后使用。

图片坐标转换行列索引(Designer).zip

1.68 KB, 下载次数: 43

回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-8-13 14:08:14
12#
鸳鸯配2024 发表于 2024-8-13 11:53
这个感觉性能不太好。

let countConfig = args.sheet.getSelections()[0];

工作表中的图片都有名字,ShapeCollection:get()即是通过图片名字来获取图片信息。您可以参考官网API文档了解详情:https://demo.grapecity.com.cn/sp ... ShapeCollection#get
回复 使用道具 举报
鸳鸯配2024
金牌服务用户   /  发表于:2024-8-13 13:44:54
11#
Wilson.Zhang 发表于 2024-8-13 11:31
ShapeSelectionChanged能够监听到图片的坐标位置,但不是行列索引,我通过命中测试将x/y坐标转换为了行列 ...

拿过来用后,报错
没有这个方法 shape.toImageSrc


我添加图片的方法是

  1. let Designer = GC.Spread.Sheets.Designer.findControl('designer-container');
  2.     let spread = Designer.getWorkbook()
  3.     let sheet = spread.getActiveSheet();
  4.     let height = sheet.getRowHeight(1)   //获取第2行行高
  5.     let width = sheet.getColumnWidth(2) //获取第2列宽度
  6.     console.log(height, '--宽度--', width)
  7.     let pic = sheet.shapes.addPictureShape("pic2", "https://p3.toutiaoimg.com/tos-cn-i-qvj2lq49k0/2e346589036945b9a9272983760b4b88~tplv-tt-large.image", 0,0,width,height)
  8.     pic.startRow(1)  //开始行在第二行
  9.     pic.endRow(2)  //结束行在第三行
  10.     pic.startColumn(1)  //开始列在第二列
  11.     pic.endColumn(2)     //结束列在第三列
  12.     // pic.includeEmptyRegionCells(true)
  13.     pic.allowMove(false)  //图片不允许移动
  14.     pic.allowResize(false)  //图片不允许拉动调整大小
  15.     pic.dynamicMove(true)  //图片是否随插入行列移动
  16.     pic.dynamicSize(true)  //图片是否随行高列宽变化而变化
复制代码


回复 使用道具 举报
鸳鸯配2024
金牌服务用户   /  发表于:2024-8-13 11:53:21
10#
Wilson.Zhang 发表于 2024-8-13 11:31
ShapeSelectionChanged能够监听到图片的坐标位置,但不是行列索引,我通过命中测试将x/y坐标转换为了行列 ...

这个感觉性能不太好。

let countConfig = args.sheet.getSelections()[0];

这个能够获取到图片的行列信息。但还没太搞明白,如何通过行列获取到图片的信息了。
回复 使用道具 举报
鸳鸯配2024
金牌服务用户   /  发表于:2024-8-13 11:48:21
9#
Clark.Pan 发表于 2024-8-12 18:07
试试这个:
https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheets.Events#shapesel ...

args.sheet.getSelections()[0]; 通过 这个方法能够获取到当前的行列。我再看看怎么获取图片的信息
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-8-13 11:31:49
8#
鸳鸯配2024 发表于 2024-8-13 10:06
这个能获取到事件,但是单元格和图片的信息都获取不到。

ShapeSelectionChanged能够监听到图片的坐标位置,但不是行列索引,我通过命中测试将x/y坐标转换为了行列索引,但是发现有一个单元格左右的偏差。Worksheet集中管理着各个形状,所以结合这些基本功能,想到一个思路:
1. 注册ShapeSelectionChanged事件,监听对图片的移动、切换、点击等动作。
2. 在ShapeSelectionChanged事件的处理函数中,轮询工作表中的图片,通过命中测试将图片的x、y坐标转换为行列索引,虽然和实际覆盖的单元格行列索引有偏差表,但是同一个图片的转换结果是不变的,因此可以据此来识别图片。匹配到图片后,通过图片的Shape:toImageSrc()即可获取到图片的base64信息。
您评估下这样能否满足需求,附件中的demo即上述思路的实现代码,提供给您参考。

图片坐标转换行列索引(Designer).zip

1.68 KB, 下载次数: 102

回复 使用道具 举报
鸳鸯配2024
金牌服务用户   /  发表于:2024-8-13 10:06:06
7#
Clark.Pan 发表于 2024-8-12 18:07
试试这个:
https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheets.Events#shapesel ...

这个能获取到事件,但是单元格和图片的信息都获取不到。
回复 使用道具 举报
鸳鸯配2024
金牌服务用户   /  发表于:2024-8-13 09:20:15
6#
Wilson.Zhang 发表于 2024-8-12 18:41
您希望通过点击单元格获取图片的哪些信息呢?咱们试试看有没有别的途径实现您的需求。

图片的单元格信息,还有图片的信息。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部