excel VBA 应该问题,想画一条线,显示在图片上,但现在只显示一下

weixin_45903952 2020-01-04 12:00:36

想在图中点三个点,坐标直接读取到表格内,并画线,现在读取坐标和画线也能成,只不过线显示一下就不见了
想法:
1、把画的线显示在最前端
2、按动按钮后,清除已画的线

https://www.lanzous.com/i8duv1i
...全文
316 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_45903952 2020-01-06
  • 打赏
  • 举报
回复
引用 5 楼 舉杯邀明月 的回复:
如果是插入到工作表中的“对象”,那必然在鼠标点击时会被选定。  用这种方案要想“不影响鼠标点击”是不现实的。 若你真想“完全受自己控制”,用VB6写 桌面应用算了,别用VBA。
看来要是用VBA想实现这种想法是不太可能了
舉杯邀明月 2020-01-06
  • 打赏
  • 举报
回复
如果是插入到工作表中的“对象”,那必然在鼠标点击时会被选定。
 用这种方案要想“不影响鼠标点击”是不现实的。

若你真想“完全受自己控制”,用VB6写 桌面应用算了,别用VBA。
weixin_45903952 2020-01-06
  • 打赏
  • 举报
回复
引用 1 楼 舉杯邀明月 的回复:
你用 GDI32的API画线?还“ GetDC(0) ”???
你知道这样画的线是画到哪去了吗…………那不消失才怪! 


既然是在 Excel中,那这些线就应该用“线条对象”插入到工作表中。
(都是Shape,其Type属性值 决定它显示为线、矩形、圆形等)

你的“想法1”有歧义,最前端指的是在哪些对象的“前”?
 如果是“特定表内的其它对象之前”用Shape对象自然没问题;
 但是要想在“所有表”、或所有工作簿,甚至“所有进程窗口”之前,那就只能是“直接画桌面之上”了。
不过这样有什么意义呢!(牵涉的其它方面问题太多,懒得说了)

想法2 也很简单呀,你自己“画”了哪些线,要管理起来呀!
 把这些“对象”管理起来了,要清除(删除、擦除)哪条线不是轻而易举的事吗!


还请大佬指导,我是想画在那个图片上,显示在图片上就行,再点左面的按钮就清除得了
weixin_45903952 2020-01-05
  • 打赏
  • 举报
回复
引用 1 楼 舉杯邀明月 的回复:
你用 GDI32的API画线?还“ GetDC(0) ”??? 你知道这样画的线是画到哪去了吗…………那不消失才怪!  既然是在 Excel中,那这些线就应该用“线条对象”插入到工作表中。 (都是Shape,其Type属性值 决定它显示为线、矩形、圆形等) 你的“想法1”有歧义,最前端指的是在哪些对象的“前”?  如果是“特定表内的其它对象之前”用Shape对象自然没问题;  但是要想在“所有表”、或所有工作簿,甚至“所有进程窗口”之前,那就只能是“直接画桌面之上”了。 不过这样有什么意义呢!(牵涉的其它方面问题太多,懒得说了) 想法2 也很简单呀,你自己“画”了哪些线,要管理起来呀!  把这些“对象”管理起来了,要清除(删除、擦除)哪条线不是轻而易举的事吗!
我的想法就是画一条线,最好是只显示在图上,但不影响鼠标点击,如果是用形状画线,点击到线条上,会把线条选中
weixin_45903952 2020-01-05
  • 打赏
  • 举报
回复
引用 1 楼 舉杯邀明月 的回复:
你用 GDI32的API画线?还“ GetDC(0) ”??? 你知道这样画的线是画到哪去了吗…………那不消失才怪!  既然是在 Excel中,那这些线就应该用“线条对象”插入到工作表中。 (都是Shape,其Type属性值 决定它显示为线、矩形、圆形等) 你的“想法1”有歧义,最前端指的是在哪些对象的“前”?  如果是“特定表内的其它对象之前”用Shape对象自然没问题;  但是要想在“所有表”、或所有工作簿,甚至“所有进程窗口”之前,那就只能是“直接画桌面之上”了。 不过这样有什么意义呢!(牵涉的其它方面问题太多,懒得说了) 想法2 也很简单呀,你自己“画”了哪些线,要管理起来呀!  把这些“对象”管理起来了,要清除(删除、擦除)哪条线不是轻而易举的事吗!
要怎么处理呢,代码都是抄下来的,还不是太理解
舉杯邀明月 2020-01-04
  • 打赏
  • 举报
回复
你用 GDI32的API画线?还“ GetDC(0) ”???
你知道这样画的线是画到哪去了吗…………那不消失才怪! 


既然是在 Excel中,那这些线就应该用“线条对象”插入到工作表中。
(都是Shape,其Type属性值 决定它显示为线、矩形、圆形等)

你的“想法1”有歧义,最前端指的是在哪些对象的“前”?
 如果是“特定表内的其它对象之前”用Shape对象自然没问题;
 但是要想在“所有表”、或所有工作簿,甚至“所有进程窗口”之前,那就只能是“直接画桌面之上”了。
不过这样有什么意义呢!(牵涉的其它方面问题太多,懒得说了)

想法2 也很简单呀,你自己“画”了哪些线,要管理起来呀!
 把这些“对象”管理起来了,要清除(删除、擦除)哪条线不是轻而易举的事吗!

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧