ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

六一献礼,祝小朋友们节日快乐(填图游戏,节前最后一次更新)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-5-29 19:55 | 显示全部楼层 |阅读模式
游戏下载: Release.rar (394.73 KB, 下载次数: 442)

游戏说明:
使用鼠标给中间画布上的图片着色,在左边的调色板中按下鼠标左/右键可分别修改鼠标左/右键所代表的颜色,在画布上按下鼠标左/右键可以可图片着色,如按下Alt键再点鼠标则是取色。
下方三个按钮的作用分别是调出前一幅图片,保存当前图片和调出下一幅图片(目前仅有四个图片可选,对应压缩文件中的四个ptrn文件,今后会有更新)
藏了一颗彩蛋,可以修改“关于”窗口上的图片和祝福语,5月31日公开
用户界面:
game.jpg
5月29日更新:
增加了一幅图片
添加了按下鼠标拖动可一次填充多个区域的功能
修正了无任务栏图标右键菜单的bug
修正了不在“保存图片”对话框中填写后缀所保存的文件就没有.bmp后缀的bug
5月31日更新
增加两幅图片(图片增加至7幅)
将图片对齐方式由原来的左上对齐改变居中对齐
抠去窗口右下边缘的杂色点
修改“上一个”和“下一个”按钮不可用时的外观
添加设置文件,可用于修改“关于”窗口上的图片和祝福文字


在程序同一目录下新建一个文本文件,名称改为settings.ini,然后将下面的文字复制进去

  1. [FillGame]
  2. PhotoFile=photo.jpg
  3. Wish=谨将此程序献给XXX,祝你聪明健康,快乐成长!
  4. BackColor=&HFFFFFF
复制代码
以上文字中等号右边的地方可以改,其他地方不要动,第一行代表“关于”窗口中的图片文件名(只要文件名,不要路径),图片需要放在程序同一目录下;第二行代表祝福语,放在“关于”窗口图片的下方;第三行代表窗口背景色,有时为了使照片与背景融为一体,可以修改。

[ 本帖最后由 小fisher 于 2009-6-1 01:29 编辑 ]

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-5-29 19:57 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-29 20:06 | 显示全部楼层

回复 2楼 雪儿浪漫想 的帖子

呵呵,很简单的游戏,上手很容易,估计小朋友会喜欢

TA的精华主题

TA的得分主题

发表于 2009-5-29 20:12 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-5-29 20:19 | 显示全部楼层
小fisher 又出精品了
也提前祝 小fisher 六一快乐  

TA的精华主题

TA的得分主题

发表于 2009-5-30 02:43 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-5-30 02:57 | 显示全部楼层
小fisher版主,下面这个链接的一楼是两个api函数。能给第二个来个具体应用的实例吗?
谢谢啦!!
http://club.excelhome.net/thread-440417-1-1.html

TA的精华主题

TA的得分主题

发表于 2009-5-30 14:16 | 显示全部楼层
很好玩的作品.
不知图片中间指定部位不能填充采用什么方法实现的,期待看到源码.
实现异型窗体的方法是否只是透明窗体中的指定部分,因此在拖动窗体时,会出现窗体的虚边框.

[ 本帖最后由 清风_ll 于 2009-5-30 14:18 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-30 16:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 清风_ll 于 2009-5-30 14:16 发表
很好玩的作品.
不知图片中间指定部位不能填充采用什么方法实现的,期待看到源码.
实现异型窗体的方法是否只是透明窗体中的指定部分,因此在拖动窗体时,会出现窗体的虚边框.

谢谢清风版主,两个都是用Region实现的,前者使用ptInRegion判断指定部位是否可以填充,如果可以的话,就用FillRegion函数填充;后者是先将窗口的边框设为None之后再使用SetWindowRgn指定窗口的显示区域,据说这样比用SetLayeredWindowAttributes让指定颜色透明更有效率(没有亲自实验),至少窗口中可以使用的颜色不受限制了
*Region是Windows GDI中的一个概念,可以先看这个:http://edais.mvps.org/Tutorials/GDI/DC/DCch6.html对Region有一个直观的认识,然后再看MSDN中相关函数的详细说明就容易多了
其中用到的不规则形状的Region是用24位bmp位图(因为它的格式相对比较简单)转化过来的,就是将全部像素读入到数组中,遍历各个像素点,使用CreateRectRgn和CombineRgn将同一颜色的像素组合成一个大的不规则的Region
目前源码还在完善过程中,暂时不能公布,有时间的话我会把根据位图创建不规则窗口的部分拿出来做个VBA版的示例;填色部分转VBA太困难,主要是VBA中不支持的东西太多(资源文件、控件DC、AutoRedraw属性、运行时改变控件MouseIcon、坐标单位转换...),尽管可以用API克服,但代码会复杂很多
虚边框是因为我用了常规的拖动无边框窗口的方法(在MouseMove事件中判断Button=1时,使用SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, ByVal 0&),貌似窗口在收到WM_NCLBUTTONDOWN, HTCAPTION消息时即使鼠标不移动也会出现虚框,如果在桌面-显示-外观-效果-“拖动时显示窗口内容”前打上勾,虚框就没有了,效果也很完美,如果不使用上面的方法,而是在MouseMove事件中设置窗口的Left和Top属性来设置窗口位置的话,窗口移动的路线上会留下一串残影,我正在寻找更好一点的解决办法,也请清风版主帮忙出出主意。

[ 本帖最后由 小fisher 于 2009-5-30 16:20 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-5-30 16:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
俺最想知道的是,图的某一部分是怎么判断出来的。显然每个界面都是一张完整的图
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 07:23 , Processed in 0.041187 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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