找回密码
 加入
搜索
查看: 18082|回复: 9

[交流] 【已经解决】如何使用GDI+的双缓冲解决GDI文字锯齿和闪烁等问题?

  [复制链接]
发表于 2012-6-23 10:08:07 | 显示全部楼层 |阅读模式
本帖最后由 Windows8 于 2012-6-24 18:32 编辑

如何使用GDI+的双缓冲解决GDI文字锯齿和闪烁等问题呢?先看看效果:看看微软的,没有锯齿,不闪烁,还发光,我的呢,只能说恶心
#include <GuiConstantsEx.au3>
#include <GDIPlus.au3>
#include <WindowsConstants.au3>
#Include <APIConstants.au3>
#Include <GUITab.au3>
#Include <WinAPIEx.au3>


#include <GUIConstantsEx.au3>

Opt('MustDeclareVars', 1)

;Const $tMARGINS
;Const $tagMARGINS
_Main()


Func _Main()
   Global $From1, $hBrush, $hFormat, $hFamily, $hFont, $tLayout;,$tMARGINS,$tagMARGINS
    ; Create GUI
    $From1 = GUICreate("GDI+", 400, 300)
        GUISetBkColor(0x0)
        Const $tMARGINS = DllStructCreate("int;int;int;int")
DllStructSetData($tMARGINS, 1, -1)

_WinAPI_DwmExtendFrameIntoClientArea($From1, $tMARGINS)

        GUISetState()

    ; Draw a string
    _GDIPlus_Startup ()
    Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND ($From1)
    $hBrush = _GDIPlus_BrushCreateSolid (0xFF000000)
    $hFormat = _GDIPlus_StringFormatCreate ()
    $hFamily = _GDIPlus_FontFamilyCreate ("微软雅黑")
    $hFont = _GDIPlus_FontCreate ($hFamily, 30, 0,2)
    $tLayout = _GDIPlus_RectFCreate (140, 110, 600, 70)
    _GDIPlus_GraphicsDrawStringEx ($hGraphic, "系统版本:Windows 7", $hFont, $tLayout, $hFormat, $hBrush)
           ; GUIRegisterMsg(0x0f, "WM_PAINT")
GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")


    ; Loop until user exits
    Do
    Until GUIGetMsg() = -3

    ; Clean up resources
    _GDIPlus_FontDispose ($hFont)
    _GDIPlus_FontFamilyDispose ($hFamily)
    _GDIPlus_StringFormatDispose ($hFormat)
    _GDIPlus_BrushDispose ($hBrush)
    _GDIPlus_GraphicsDispose ($hGraphic)
    _GDIPlus_Shutdown ()

EndFunc   ;==>_Main

Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)


        ;$hGraphic = _GDIPlus_GraphicsCreateFromHWND($From1)


            _GDIPlus_GraphicsDrawStringEx ($hGraphic, "系统版本:Windows 7", $hFont, $tLayout, $hFormat, $hBrush)


        Return $GUI_RUNDEFMSG


EndFunc   ;==>WM_PAINT
由于困难较多,折腾了一小时才弄出来,有很多没用的费代码,大虾们见谅

本帖子中包含更多资源

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

×
发表于 2012-6-24 10:11:57 | 显示全部楼层
去看下_WinAPI_DrawThemeTextEx的帮助

评分

参与人数 1金钱 +14 收起 理由
Windows8 + 14

查看全部评分

 楼主| 发表于 2012-6-24 18:30:43 | 显示全部楼层
去看下_WinAPI_DrawThemeTextEx的帮助
asionwu 发表于 2012-6-24 10:11


对,谢谢,它真的可以实现在Aero上写发光黑字。
发表于 2012-6-25 17:26:56 | 显示全部楼层
不懂什么叫双缓冲....
发表于 2012-6-25 17:35:18 | 显示全部楼层
不懂什么叫双缓冲....
发表于 2012-6-25 22:33:37 | 显示全部楼层
友情提示,将“已经解决”改为“已解决”
发表于 2013-1-16 19:05:40 | 显示全部楼层
正需要这个,我的程序开了很多子窗口,切换时候闪烁很厉害,研究研究.
发表于 2013-7-16 08:57:18 | 显示全部楼层
很不错,谢谢分享
发表于 2013-7-16 08:58:19 | 显示全部楼层
很不错,谢谢分享
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-13 14:34 , Processed in 0.071315 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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