ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5805|回复: 10

[分享] [分享]使用VB合并两张图片,感谢Moneky

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-3-18 17:33 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请见附件的图,将1和2合并为1+2的样子,主要是想实现将黑线换成红线的功能。
图片1是一般的图片,
图片2是透明的GIF图片,线框全是红色,是用PS做的。
图片1+2是合并的效果图,是用PS做的。

实在没想到好办法。
在网上找了一下,有一个柯达控件,但却下载不到这个控件,也无法试验。
不知道还有没有别的办法可以实现。

附件的压缩包中包含了上述三张图片

最终解决方案请见11楼
点击进入第11楼


[ 本帖最后由 tao60 于 2010-3-26 11:46 编辑 ]
1.JPG
2.gif
1+2.jpg

Book合并图像.rar

191.22 KB, 下载次数: 76

TA的精华主题

TA的得分主题

发表于 2010-3-18 17:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这个问题比较有意思,占位等高人指点。

TA的精华主题

TA的得分主题

发表于 2010-3-18 17:44 | 显示全部楼层
VB 做没有问题,vba太复杂了。可惜网吧没有vb环境

TA的精华主题

TA的得分主题

发表于 2010-3-18 18:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
专门下载了个VB,看看效果,如果exe不能运行的话,可能是系统缺少comdlg32.ocx,附件中已经包含,手动注册即可

Book合并图像2.rar

73.83 KB, 下载次数: 74

TA的精华主题

TA的得分主题

发表于 2010-3-18 18:51 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-3-18 18:54 | 显示全部楼层
源程序也拿上来,楼主可以根据自己的需要更改,我这个是在我的网易泡泡游戏——大家来找茬 外挂的基础上改的。比较乱

command2的click代码应该这样

Private Sub Command2_Click()
    On Error GoTo er
    dlg.CancelError = True
    dlg.Filter = "*.bmp|*.bmp"
    dlg.DialogTitle = "请选择要处理的图片文件"
    dlg.ShowOpen
    FN = dlg.FileName               '主要是这一句的位置,不然自动保存会出错
    pic1.Picture = LoadPicture(dlg.FileName)
    pic1.Refresh
    Exit Sub
er:
End Sub

[ 本帖最后由 Moneky 于 2010-3-18 18:57 编辑 ]

tmp.rar

14.28 KB, 下载次数: 57

vb源程序

TA的精华主题

TA的得分主题

发表于 2010-3-18 19:04 | 显示全部楼层
原帖由 tao60 于 2010-3-18 17:33 发表
请见附件的图,将1和2合并为1+2的样子,主要是想实现将黑线换成红线的功能。
图片1是一般的图片,
图片2是透明的GIF图片,线框全是红色,是用PS做的。
图片1+2是合并的效果图,是用PS做的。

实在没想到好办法。 ...


我觉得用VBA蛮简单的啊,不知道我有没有理解错误,见附件。
Sub My_test()
ActiveSheet.Shapes("Pic1").Top = 10
ActiveSheet.Shapes("Pic2").Top = 10
ActiveSheet.Shapes("Pic1").Left = 10
ActiveSheet.Shapes("Pic2").Left = 10
ActiveSheet.Shapes.Range(Array("Pic1", "Pic2")).Select
Selection.ShapeRange.Group.Select
End Sub
供参考

[ 本帖最后由 Simon_Zhu 于 2010-3-18 19:06 编辑 ]

Book合并图像new.rar

97.87 KB, 下载次数: 52

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-3-19 09:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复 4楼 Moneky 的帖子 回复 6楼 Moneky 的帖子

非常感谢!效果非常好,要是能在VBA里实现就好了,因为我的图片都是直接放在Excel里的。

另外存出来的图片好大,这么小的图片也弄了一个M有多,太大了,不知道有没有办法可以弄小一点。

能否解释一下你的做法,我看了代码有点看不懂,我看处理的关键程序应该是这一段,你对像素怎么控制的,就变成红色啦?

  1.     For y = 1 To HeightSrc
  2.        For x = 1 To WidthSrc
  3.             If PixelsSrc2(1, x, y) < 200 Then

  4.                 PixelsSrc(1, x, y) = 0
  5.                 PixelsSrc(2, x, y) = 0
  6.                 PixelsSrc(3, x, y) = 255

  7.             End If
  8.        Next
  9.     Next
  10.     SetDIBitsToDevice pic1.hdc, 0, 0, WidthSrc, HeightSrc, 0, 0, 0, HeightSrc, PixelsSrc(1, 1, 1), Bitmap_Info, DIB_RGB_COLORS
  11.     pic1.Refresh
复制代码

[ 本帖最后由 tao60 于 2010-3-19 09:22 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-3-19 09:20 | 显示全部楼层

回复 7楼 Simon_Zhu 的帖子

非常感谢!
我开始想要的效果就是你这个效果,但是处理的结果总是有一点点黑边,美中不足。
看到4楼Moneky的帖子,效果非常好。

TA的精华主题

TA的得分主题

发表于 2010-3-19 12:35 | 显示全部楼层
原帖由 tao60 于 2010-3-19 09:17 发表
非常感谢!效果非常好,要是能在VBA里实现就好了,因为我的图片都是直接放在Excel里的。

另外存出来的图片好大,这么小的图片也弄了一个M有多,太大了,不知道有没有办法可以弄小一点。

能否解释一下你的做法, ...

图片太大是因为保存的是bmp格式,要缩小尺寸可以在网上找个jpg控件,将图片保存成jpg格式即可,实在不想写程序,可以把图片按bmp保存好后,下载个批量格式转换工具转换成jpg也可以。

你对像素怎么控制的,就变成红色啦?  这个是用DIB处理图形的方法,可以看看网上的资料,相信你会明白。这种处理图形的方式优点是速度快,如果用vb内置的Point,Pset函数的话,那个时间无法忍受。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-6-1 15:23 , Processed in 0.036415 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表