TC官方合作论坛

标题: 求教,TC能否实现类似qq的 图片浏览弹窗 [打印本页]

作者: sanmaodo    时间: 2015-10-7 20:01
标题: 求教,TC能否实现类似qq的 图片浏览弹窗
如下图,点击图片后弹出浏览窗口,窗口要没有标题,窗口的大小自适应图片大小,窗口能透明的话,那就完美了。
请高手赐教,或者给个思路。




作者: 超自然    时间: 2015-10-8 09:02
这是画出来的,TC也可以
1:自己注册个窗口类
2:创建个窗口实例
3:Hook实例的消息循环等下用来响应键盘鼠标的操作
4:创建个内存画布
5:调gdi+把图画到画布上
6:把画布贴出来到窗口DC上
过程就这样,别怀疑能不能做到,我那些自绘控件也差不多是这样实现的,写不写得出来就看你自己了
作者: sanmaodo    时间: 2015-10-8 11:08
超自然 发表于 2015-10-8 09:02
这是画出来的,TC也可以
1:自己注册个窗口类
2:创建个窗口实例

多谢版主指点,TC果然很强大,只是感觉过程可能会比较复杂。

关于第4,5点有没有可以借鉴的例子或资料?TC的网络资料目前不太多,只怕我等新手跨不过这个坑。
作者: 超自然    时间: 2015-10-8 12:36
sanmaodo 发表于 2015-10-8 11:08
多谢版主指点,TC果然很强大,只是感觉过程可能会比较复杂。

关于第4,5点有没有可以借鉴的例子或资料? ...

1:窗口背景是透明的,要将创建的窗口设置成分层窗口,修改风格之后用UpdateLayeredWindow先把透明度搞起来.
2:用CreateCompatibleDC弄个内存DC,也就是画布了
3:CreateDIBSection创建个兼容图形.至此,你已经把一个窗口设置成分层窗口,并且已经半透明,内存里有了一个DC,也有了个空白的兼容图形.
4:初始化GDI+,创建个基于内存DC的图形指针
4-1:用GdipLoadImageFromFile将图片读入,变成图像指针
4-2用GdipDrawImageRectRect将图像指针画到图形指针上,这时候可以控制画出的大小
这里因为你的GDI+图形是基于内存DC的,所以画在图形上等于画在内存DC上
5:还是用UpdateLayeredWindow复合内存DC到窗口实例上,因为是分层窗口windows会帮你刷新的
到这就看到半透明窗口上挂着个图片了
至于想支持鼠标滚轮缩放,键盘什么的,就在消息里面再画一遍,最后更新出去就行
切记各种对象用完了要销毁,否则会内存泄露
作者: sanmaodo    时间: 2015-10-8 13:26
超自然 发表于 2015-10-8 12:36
1:窗口背景是透明的,要将创建的窗口设置成分层窗口,修改风格之后用UpdateLayeredWindow先把透明度搞起来. ...

非常感谢!!!
作者: 超自然    时间: 2015-10-8 19:34
sanmaodo 发表于 2015-10-8 13:26
非常感谢!!!


无聊写了个玩玩,没写那些键盘鼠标操作.效果大概就这样
仿qq图片查看.rar (3.74 MB, 下载次数: 550)

作者: 爱上老公    时间: 2015-10-9 09:09
自然大神的自然要支持
作者: sanmaodo    时间: 2015-10-9 14:14
超自然 发表于 2015-10-8 19:34
无聊写了个玩玩,没写那些键盘鼠标操作.效果大概就这样

真不错,就是要这个效果。
作者: 超自然    时间: 2015-10-12 08:53
源码不好拆开,我偷懒,没另起工程.直接拿之前做的正常控件工程改的
其实用的无非就是真彩窗口和真彩图画板稍加变化就出来了
整个工程包含20多个控件,实在不好拆开.不好意思
作者: sanmaodo    时间: 2015-10-12 14:09
超自然 发表于 2015-10-12 08:53
源码不好拆开,我偷懒,没另起工程.直接拿之前做的正常控件工程改的
其实用的无非就是真彩窗口和真彩图画板稍 ...

理解。
TC的示例“橡皮筋”,好像也包含了弹窗的代码,能否帮我确认一下?
作者: My水乐    时间: 2015-10-13 13:59
学习了




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1