找回密码
 加入
搜索
查看: 4029|回复: 6

[图形处理] [已解决]如何解决桌面滚动文字遇到白色背景不清晰问题?

  [复制链接]
发表于 2012-4-2 22:12:06 | 显示全部楼层 |阅读模式
本帖最后由 lujd0429 于 2012-4-5 17:56 编辑

如何解决桌面滚动文字遇到白色背景不清晰问题?谢了






AutoIt代码如下
#include <GuiConstantsEx.au3>
#include <GDIPlus.au3>
#Include <GDIPlusEx.au3>
#Include <WinAPIEx.au3>
#Include <WindowsConstants.au3>
;#include <array.au3>
 
Opt('MustDeclareVars', 1)
 
Global   $left=@DesktopWidth
Local $hGUI, $hWnd, $hGraphic, $hBrush, $hFormat, $hFamily, $hFont, $tLayout, $aInfo  
Local $sString = "Hello world"&@CRLF&"滚动字幕测试,为了增加长度再来一次,不知道中英文混合的效果如何? this is a 测试!"&@CRLF&"abcdefghijklmnop"
 
$aInfo=_GetStringsize($sString,"微软雅黑",12,2,400);只需注意这里设置的字体设置与LABEL的字体一致
 
Local $W=DllStructGetData($aInfo[0],3)
Local $H=DllStructGetData($aInfo[0],4)
 
$hGUI = GUICreate("GDI+", $W,$H,0-$W,0,0x80000000+0x00000200,0x02000000+0x00080000+0x00000020)
GUISetBkColor(0x010101)
        
GUICtrlCreateLabel($sString,0,0,$W,$H)
GUICtrlSetFont(-1,12,400,2,"微软雅黑");控件ID, 大小 , 权值 , 属性 , 字体名
GUICtrlSetColor(-1,0x00FFFF)
GUICtrlSetBkColor(-1,-2)
_WinAPI_SetLayeredWindowAttributes($hGUI,0xff010101,255,0x03,True)
GUISetState()
  
AdlibRegister("time",50)
 
while GUIGetMsg()+3
WEnd
 
Func time()
        if $left<0-$W then 
                AdlibUnRegister("time")
                Exit
        EndIf
        WinMove($hGUI,"",$left,0)
        $left-=1
EndFunc
 
#cs
Name           :_GetStringsize
Description   :返回字符串像素宽,高
Syntax        :_GetStringsize($sString,$Font_Family,$Font_Size,$Font_iStyle)
Parameters  : $sString - 输入的字符串
                  $Font_Family - 字体族
                                  $Font_Size - 字体大小
                                  $Font_iStyle - 字体样式. 可以结合下面的值:
                                                                        0 - 正常重度或者浓度
                                                                        2 - 斜体
                                                                        4 - 下划线
                                                                        8 - 删除线
                                 $Font_weight - 字体权值
                                                                        400 - (正常)
                                                                        800 - (粗体)
Return values: 成功:返回下格式数组: 
                                                        [0] - 接收字符串矩形边界的 $tagGDIPRECTF 结构 
                                                        [1] - 矩形布局中实际适合的字符数量 
                                                        [2] - 矩形布局中实际适合的行数 
                                        失败   - 返回 0
#ce
Func _GetStringsize($sString,$Font_Family,$Font_Size,$Font_iStyle,$Font_weight)
        if BitAND($Font_iStyle,1)=1 then $Font_iStyle=$Font_iStyle-1
        if $Font_weight=400 Then 
                $Font_weight=0
        Else
                $Font_weight=1
        EndIf   
_GDIPlus_Startup ()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND (WinGetHandle(@ScriptFullPath))
$hBrush = _GDIPlus_BrushCreateSolid (0xFF00007F)
$hFormat = _GDIPlus_StringFormatCreate ()
$hFamily = _GDIPlus_FontFamilyCreate ($Font_Family)
$hFont = _GDIPlus_FontCreate ($hFamily, $Font_Size, BitOR($Font_iStyle,$Font_weight))
$tLayout = _GDIPlus_RectFCreate (0)
$aInfo = _GDIPlus_GraphicsMeasureString ($hGraphic, $sString, $hFont, $tLayout, $hFormat)
if $aInfo=0 then Return SetError(0)
_GDIPlus_FontDispose ($hFont)
_GDIPlus_FontFamilyDispose ($hFamily)
_GDIPlus_StringFormatDispose ($hFormat)
_GDIPlus_BrushDispose ($hBrush)
_GDIPlus_GraphicsDispose ($hGraphic)
_GDIPlus_Shutdown ()
return $aInfo
EndFunc
注:本代码转载自:3smile

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-4-3 00:48:05 | 显示全部楼层
个人思路:
降低透明度或者更换对应的文字的颜色!
 楼主| 发表于 2012-4-3 00:52:00 | 显示全部楼层
回复 2# user3000

这也是一种思路,先尝试一下,多做做测试应该能够找到方法~
发表于 2012-4-3 09:38:56 | 显示全部楼层
第23行改为:
GUICtrlSetFont(-1,12,400,2,"微软雅黑",3);控件ID, 大小 , 权值 , 属性 , 字体名,字体质量
 楼主| 发表于 2012-4-3 10:20:02 | 显示全部楼层
回复 4# 3mile


谢谢~ 3mile元老 !    你的方法很管用!但是我想问一下,如何实现像播放器歌词显示一样在透明背景上滚动文字啊?我学习AutoIt快2个多月了,利用课余时间认真的看了一遍帮助文档,可是还是不太清楚如何来实现,请见谅!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-4-4 00:35:15 | 显示全部楼层
回复 5# lujd0429


    这个AU3我还没能领悟这点 易语言我倒是会

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2012-4-4 00:54:48 | 显示全部楼层
回复 6# vason1019

太考验我的极限啦
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-19 19:18 , Processed in 0.085016 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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