Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6150|回复: 58

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

  [复制链接]

该用户从未签到

4

主题

155

帖子

308

积分

普通会员

Rank: 2

积分
308
发表于 2022-7-15 08:06:01 | 显示全部楼层 |阅读模式
以前在研究半透明不规则窗口的时候,用的是gdi的TextOut/DrawText绘制字体,但绘制出的字体是透明的,2 {5 g# \3 B  b& {. r9 y
现在我完全放弃了GDI的TextOut()、BitBlt()的方式,而用SetDIBitsToDevice()代替,就是直接贴像素到DC里。9 B! Q" ]5 t$ k- o

7 \7 n/ k. U, P9 D0 T今天尝试用SetDIBitsToDevice()+UpdateLayeredWindow()实现半透明不规则窗口,结果非常顺利!) a5 U) @( ^. o+ w& \/ b7 h" D
贴出来,共享给需要的朋友.
" Q/ h1 c" C, V  f1 @0 ?9 n+ C' K/ n$ }
. h, u) b8 F6 G$ E另外,本程序还附带了一个使用MMX汇编优化的32位alpha混合函数(57行,有详尽注释),需要的朋友可以直接copy了。. U. D0 l' Q6 Z3 I: N
6 \0 `% Y! s8 y; M. C
PS:关于字体的绘制: e# q% t) n& n- ~" c1 q: E% Q
我建议大家用GetGlyphOutline()手动提取字形像素去绘制,因为TextOut这类绘制函数功能有限,只适合初级软件使用,而要想画出丰富多彩的界面,比如字体alpha渐变,就必须自己操作像素,所以GetGlyphOutline()才是专业级的,而且兼容性好,可以抽象出来提供给ddraw、d3d、opengl等使用
5 {5 v, O6 E# N& M
- b. k: L& }9 T资源下载地址和密码(百度云盘):
游客,如果您要查看本帖隐藏内容请回复
[/hide] 百度网盘信息回帖可见( u, S. Q3 {( x, w

2 m( R; W6 E, X" \
9 {% V% P1 E1 F& |
0 K6 S. F: {8 s3 f6 g本资源由Java自学网收集整理【www.javazx.com】
回复

使用道具 举报

该用户从未签到

3

主题

182

帖子

361

积分

普通会员

Rank: 2

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

使用道具 举报

该用户从未签到

11

主题

147

帖子

303

积分

普通会员

Rank: 2

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

使用道具 举报

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

    [LV.1]初学乍练

    0

    主题

    4587

    帖子

    9183

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4426

    帖子

    8854

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4438

    帖子

    8878

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4465

    帖子

    8932

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

  • TA的每日心情

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

    [LV.1]初学乍练

    0

    主题

    4365

    帖子

    8739

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

    该用户从未签到

    0

    主题

    4424

    帖子

    8850

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

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

    [LV.1]初学乍练

    0

    主题

    4482

    帖子

    8977

    积分

    普通会员

    Rank: 2

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2025-2-24 07:33 , Processed in 0.162800 second(s), 25 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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