[已解决]GUICtrlCreatePic显示的图片出现类似坏点的东西
本帖最后由 东风破 于 2013-10-9 18:28 编辑唉,折腾了一天了。就是没办法把图中的黑点给去掉,尝试过的方法如下:
1. 本来用Photoshop切片,后来换成fireworks,失败
2. 切片之后用系统自带画图工具打开一下然后保存,坏点会减少,但是仍然有部分
3. 在XP下显示正常,故把所有工具搬到XP下生成图片,但拿回win7测试还是有坏点
4. 论坛了搜索了有个09年的帖子跟我一样的问题,但是没能解决。
有解决的大大们指教一下。
源码如下:#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
Opt("GUIOnEventMode", 1)
$Form = GUICreate("", 555, 440, -1, -1, $WS_POPUP)
$bkpic = GUICtrlCreatePic(@ScriptDir & "\bg.jpg", 0, 0, 555, 440)
GUICtrlSetState(-1, $GUI_DISABLE);禁用图片控件,以作为背景
$bt2 = GUICtrlCreatePic(@ScriptDir & "\images\bt2.jpg", 101, 20,0,0)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
While 1
Sleep(100)
WEnd
Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam);拖动无边框窗体
If ($hWnd = $Form) And ($iMsg = $WM_NCHITTEST) Then Return $HTCAPTION
EndFunc ;==>WM_NCHITTEST附件如下(图片和源码):
换了好多的图片测试,发现找一些颜色不是很复杂,立体感不是很强的图片能够有效避免这一问题。更好的的办法期待大神
另外,国外友人同样讨论过类似问题,E文不好,大概看了下,貌似GDI能够完美避免这种问题。原帖如下:
http://www.autoitscript.com/forum/topic/146348-images-display-with-black-squares-on-them/
问题已明确,是图片本身的问题。详见11楼benkel的解答:(点击直达) 代码没有,图片没有,别人想提供下意见都没办法.. 回复 2# annybaby
多谢提醒, 现在就上传 回复 3# 东风破
不会又是跟WIN7的主题不兼容所致吧?
把WIN7主题改“经典”再测试一下先? 回复 4# user3000
嗯,测试可以了。那现在怎么办啊?毕竟不是所有的win7都是经典主题 回复 5# 东风破
抱歉!
我能力之外,也没处理过类似问题。
见过相关提问帖,也忘了具体内容!
你可以在高人出手前,尝试搜索一下。 回复 6# user3000
嗯,多谢。努力搜索中。。。 新手有此基础确实难得. 回复 9# lxz
多谢谬赞,有劳前辈们指教 测试了一下,不关AU3的事,也不是XP或者WIN7。我在XP下测试一样有黑点,其实那不叫黑点,只是你第二张图片有alpha通道?(这个名称不能很确定,小菜菜)也就是有透明的点,直接把你背景图片通过透明的地方显示出来了。你的XP没黑点估计是你的GDI+版本低?我的XP一样有黑点,你用这个例子试试就知道是图片的问题了!#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
;~ Opt("GUIOnEventMode", 1)
$Form = GUICreate("", 555, 440, -1, -1, $WS_POPUP)
$bkpic = GUICtrlCreatePic(@ScriptDir & "\bg.jpg", 0, 0, 555, 440)
GUICtrlSetState(-1, $GUI_DISABLE);禁用图片控件,以作为背景
$bt2 = GUICtrlCreatePic(@ScriptDir & "\images\bt2.jpg", 101, 20,0,0)
$bt2 = GUICtrlCreatePic(@ScriptDir & "\images\bt2.jpg", 101, 150,0,0)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
While GUIGetMsg() <>-3
WEnd
Func WM_NCHITTEST($hWnd, $iMsg, $iwParam, $ilParam);拖动无边框窗体
If ($hWnd = $Form) And ($iMsg = $WM_NCHITTEST) Then Return $HTCAPTION
EndFunc ;==>WM_NCHITTEST 回复 11# benkel
嗯,的确是您说的这样!
这个图标是eps格式,我通过ai转换成psd之后才用的。按照您的方法,我用qq截图直接截取ps显示的图片(qq截图只获取屏幕像素),测试完全正常!但是还是想弄明白到底如何才能使这种格式的图标正常显示,毕竟qq截图肯定效果不怎么样。 试试用GDI+会不会,估计效果一样,因为图片上有透明通道…… 回复 13# benkel
搜索到的老外友人的帖子同样建议用GDI+,但是我还没尝试,等把当前的完成了会试一下的。
页:
[1]