Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5834|回复: 58

纯GDI完美实现半透明不规则窗口(总代码量381行,1个cpp文件)

  [复制链接]

该用户从未签到

1

主题

144

帖子

283

积分

普通会员

Rank: 2

积分
283
发表于 2022-7-15 08:06:01 | 显示全部楼层 |阅读模式
以前在研究半透明不规则窗口的时候,用的是gdi的TextOut/DrawText绘制字体,但绘制出的字体是透明的,
" {7 f1 O) [* B) M+ \# D3 c& Q! i现在我完全放弃了GDI的TextOut()、BitBlt()的方式,而用SetDIBitsToDevice()代替,就是直接贴像素到DC里。
, F/ L% P: _4 J
. L0 t. o/ s  ~; [* ^今天尝试用SetDIBitsToDevice()+UpdateLayeredWindow()实现半透明不规则窗口,结果非常顺利!8 b% J# D* s, m0 G
贴出来,共享给需要的朋友.
; V/ ~' r( ~2 v6 t4 r  f) I& X; r0 @( J) x6 Q7 s- M! o! A3 ^! s
另外,本程序还附带了一个使用MMX汇编优化的32位alpha混合函数(57行,有详尽注释),需要的朋友可以直接copy了。3 P) q, t5 a2 X) [; ~* ^- {& P
& z# w0 l( Y1 h
PS:关于字体的绘制
; t8 y* c9 `8 y我建议大家用GetGlyphOutline()手动提取字形像素去绘制,因为TextOut这类绘制函数功能有限,只适合初级软件使用,而要想画出丰富多彩的界面,比如字体alpha渐变,就必须自己操作像素,所以GetGlyphOutline()才是专业级的,而且兼容性好,可以抽象出来提供给ddraw、d3d、opengl等使用
. D" G' K8 O, k9 A0 L" s$ G. `
/ T4 t% T1 j! m( X( [0 h资源下载地址和密码(百度云盘):
游客,如果您要查看本帖隐藏内容请回复
[/hide] 百度网盘信息回帖可见
7 X, W8 s2 J7 e, K2 |
: H1 ^; Z# }5 M6 M$ N# I8 ^- J4 s4 u0 z1 R. @
  }& }3 j% Z# e6 n
本资源由Java自学网收集整理【www.javazx.com】
回复

使用道具 举报

该用户从未签到

1

主题

171

帖子

305

积分

普通会员

Rank: 2

积分
305
发表于 2022-7-15 07:39:00 | 显示全部楼层
强烈支持楼主ing……
回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

134

帖子

270

积分

普通会员

Rank: 2

积分
270
发表于 2022-7-15 08:19:43 | 显示全部楼层
楼主加油,我们都看好你哦。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    无聊
    2017-8-31 17:43
  • 签到天数: 1 天

    [LV.1]初学乍练

    0

    主题

    4232

    帖子

    8473

    积分

    普通会员

    Rank: 2

    积分
    8473
    发表于 2022-8-3 06:44:57 | 显示全部楼层
    赞一个,还能说什么呢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    4069

    帖子

    8140

    积分

    普通会员

    Rank: 2

    积分
    8140
    发表于 2022-8-3 23:09:58 | 显示全部楼层
    学习学习java架构师
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    4088

    帖子

    8178

    积分

    普通会员

    Rank: 2

    积分
    8178
    发表于 2022-8-6 15:02:24 | 显示全部楼层
    真是好资料
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    4128

    帖子

    8258

    积分

    普通会员

    Rank: 2

    积分
    8258
    发表于 2022-8-12 19:31:07 | 显示全部楼层
    好资源
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2018-4-23 09:59
  • 签到天数: 1 天

    [LV.1]初学乍练

    0

    主题

    4030

    帖子

    8069

    积分

    普通会员

    Rank: 2

    积分
    8069
    发表于 2022-9-4 20:49:31 | 显示全部楼层
    大佬  厉害呀
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    4115

    帖子

    8232

    积分

    普通会员

    Rank: 2

    积分
    8232
    发表于 2022-9-8 09:05:01 | 显示全部楼层
    赞赞赞!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2016-8-15 13:15
  • 签到天数: 1 天

    [LV.1]初学乍练

    0

    主题

    4134

    帖子

    8281

    积分

    普通会员

    Rank: 2

    积分
    8281
    发表于 2022-9-27 14:40:38 | 显示全部楼层
    好东西,学这块很必要呢
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Java自学网

    GMT+8, 2024-11-27 22:30 , Processed in 0.084469 second(s), 29 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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