【请教】如何将一张png图片作为窗体
vb.net吧
全部回复
仅看楼主
level 11
Mobius🎄
楼主
如题,不是将png图片作为窗体背景,而是直接将png图片作为窗体,类似于PS启动画面那样的效果,有alpha通道和不规则形状。谢谢~
2016年02月06日 02点02分
1
level 13
Nukepayload2
去学wpf,学到一半你就会了
---贴吧极速版 For UWP
2016年02月06日 02点02分
2
Mobius🎄
可我想用win32。。。
2016年02月06日 03点02分
Nukepayload2
那代码量不是闹着玩的。首先把窗体边框样式改为无,然后设置LayeredWindow,再指定透明色并把不想透明的区域的颜色中的透明色排除。这些完成后还得处理Dpi缩放模式。 ---贴吧极速版 For UWP
2016年02月06日 03点02分
Mobius🎄
@Nukepayload2
。。。。好可怕
2016年02月06日 04点02分
level 7
枫飞铃兰
ps是用图片做窗体吗?
2016年02月06日 02点02分
3
Mobius🎄
我猜是吧。。。
2016年02月06日 03点02分
Mobius🎄
我指的是启动画面
2016年02月06日 03点02分
level 8
杨宇成12345
如果是启动画面需要不规则。。。wpf有一个可行方案。不知道win32是否适用,就是改掉文件的编译模式,把图片的编译模式改为启动画面(属性选项卡)另外,项目里貌似可以添加启动窗口吧
你去翻一下
启动画面不规则可以用gdi+直接在桌面上绘制一个图
但是效率太低了
如果窗体不规则,去学wpf把
2016年02月06日 03点02分
4
Mobius🎄
好吧。。谢谢
2016年02月06日 04点02分
level 9
企鹅列兵
用 WIN32 API 可以实现你要的功能,PNG 透明无边框窗体。
---贴吧极速版 For UWP
2016年02月06日 03点02分
5
level 9
企鹅列兵
关键代码也就十来行左右。
---贴吧极速版 For UWP
2016年02月06日 03点02分
6
Mobius🎄
额谢谢
2016年02月06日 04点02分
level 9
无聊爱磕唠😫
窗体样式设定为none,然后设置窗体的背景为窗口挡住的桌面背景(窗口即为透明了),再加入PNG图片。这个是我以前找到的实现窗体毛玻璃透明的方案之一。
2016年02月06日 06点02分
7
Mobius🎄
但这样只是伪透明吧,而且要实时获取被窗体挡住的桌面图片
2016年02月06日 08点02分
无聊爱磕唠😫
回复
福厦高速
:对啊
2016年02月07日 09点02分
level 9
无聊爱磕唠😫
我上面说的那个方案难就难在窗体的背景,其实这个可以看做是截图,截取坐标为窗体挡住的桌面图像,获取坐标后隐藏窗体0.01S,截图,完毕后再显示窗体。这里看起来很麻烦,其实都是在0.03S内完成的动作,这个动作看是看不出来的。至于代码……待会,我在知道里曾提问过,我找找链接
2016年02月06日 06点02分
8
Mobius🎄
学习了
2016年02月06日 08点02分
level 9
无聊爱磕唠😫
参考链接:
zhidao.b
aidu.
co
m/question/1640
66667249501
1540.html
2016年02月06日 06点02分
9
Mobius🎄
好的谢谢
2016年02月06日 08点02分
level 9
无聊爱磕唠😫
我这个方案其实有漏洞:移动窗体后窗体仍显示之前的背景(说不清,试了你就知道了),解决方案,吧代码也复制到movedown里,但这还是有问题,这样移动窗体会抖动。最好的方式,这个只能应用在窗体的启动界面等不能移动的窗体上就好,就像LZ发的PSCS6的启动界面一样。
2016年02月06日 06点02分
10
Mobius🎄
嗯理解
2016年02月06日 08点02分
level 9
企鹅列兵
楼主问题是否解决,我有一套完整的透明异形窗体解决方案。
---贴吧极速版 For UWP
2016年02月07日 00点02分
12
Mobius🎄
还没= =因为不急着用,所以还没去实践,不过楼上几位说的都好麻烦啊,没有更快捷一些的吗
2016年02月07日 03点02分
企鹅列兵
回复 福厦高速 : 如果仅仅是要把一张 PNG 图片作为窗体显示,用 WIN32 API 不是很复杂。如果还要在上显示控件,这种情况用 WIN32 API 可以做出这种效果,但有些复杂,用 WPF 则比较简单。 ---贴吧极速版 For UWP
2016年02月07日 05点02分
Mobius🎄
@企鹅列兵
如果不显示控件,要怎么做?求大神指导一下。。
2016年02月07日 06点02分
企鹅列兵
回复 福厦高速 :你qq多少,晚上回去帮你解决,白天在团年。 ---贴吧极速版 For UWP
2016年02月07日 06点02分
level 13
Nukepayload2
我实在不明白。为什么WPF拖控件就能搞定的事情楼主非要写Winform解决?
背景透明的可不规则的窗体是LayeredWindow,Winform并没有内置对于这一类窗口的支持。在某些情况下代码量甚至会超过c++ ATL的!
---贴吧极速版 For UWP
2016年02月08日 02点02分
13
level 13
Nukepayload2
如果楼主需要代码重用,完全可以用WPF程序做启动器,启动Winform应用。仅仅是一个简单的开始屏幕,为它写那么多代码值得吗?新建个窗口就能搞定的事情非得写一大堆代码。如果没写好效果还会输给WPF。这是参考链接,楼主写完代码跟这个对照一下你是否选择了一条远路。
http://www.cnblogs.com/lidabo/p/3437715.html
---贴吧极速版 For UWP
2016年02月08日 02点02分
14
level 13
Nukepayload2
参考代码有1处疏漏,就是没有设置Dpi处理方式。需要参考这篇文章把Dpi处理方式改一下,并自己处理缩放问题:
http://www.cppblog.com/weiym/archive/2014/02/18/205841.aspx
---贴吧极速版 For UWP
2016年02月08日 03点02分
15
Mobius🎄
好吧。。涨姿势了。。因为还没学WPF所以一直是用winform写的= =谢谢指导~
2016年02月08日 03点02分
Nukepayload2
回复 福厦高速 : 既然你选择了vb,那么尽量少写代码同时有较好的用户体验是比较重要的。 ---贴吧极速版 For UWP
2016年02月08日 03点02分
Mobius🎄
@Nukepayload2
嗯呐
2016年02月09日 03点02分
level 10
厄尔庇斯的溪流
用WPF就好
2016年02月11日 07点02分
16
1
2
尾页