SOUI, UI, just so so!

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 503|回复: 3

SOUI中绘制HBITMAP

[复制链接]

14

主题

25

帖子

252

积分

超级版主

Rank: 8Rank: 8

积分
252
发表于 2018-5-5 22:55:28 | 显示全部楼层 |阅读模式
直接在RT->getDC上绘制HBITMAP会导致alpha通道丢失,需要使用gdiplus来绘制。
下面是关键代码:
  1. void SBmpViewer::OnPaint(IRenderTarget *pRT)
  2.         {
  3.                 if(!m_hBmp) return;
  4.                 HDC hdc = pRT->GetDC();
  5.                 CRect rc = GetClientRect();
  6.                 Gdiplus::Graphics *p = new Gdiplus::Graphics(hdc);
  7.                 Gdiplus::Bitmap *pImg = Gdiplus::Bitmap::FromHBITMAP(m_hBmp,NULL);
  8.                 p->DrawImage(pImg,rc.left,rc.top,rc.Width(),rc.Height());
  9.                 delete pImg;
  10.                 delete p;
  11.                 pRT->ReleaseDC(hdc);
  12.         }
复制代码





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

4

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2018-6-8 09:47:22 | 显示全部楼层
看了你的例子,很不错;我想在模态对话框上进行绘图,使用void CTestDlg::OnPaint(SOUI::IRenderTarget * pRT) 的时候 pRT获取的值是NULL 不知道为啥 求指点
回复

使用道具 举报

11

主题

29

帖子

423

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
423
发表于 2018-6-8 13:49:51 | 显示全部楼层
JamesWu9527 发表于 2018-6-8 09:47
看了你的例子,很不错;我想在模态对话框上进行绘图,使用void CTestDlg::OnPaint(SOUI::IRenderTarget * p ...

没有demo说可以像你说的这样做吧?
先搞清楚SOUI的绘制流程。
回复

使用道具 举报

0

主题

4

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2018-6-8 14:58:19 | 显示全部楼层
admin 发表于 2018-6-8 13:49
没有demo说可以像你说的这样做吧?
先搞清楚SOUI的绘制流程。

想尝试一下,看是否能行
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|Setoutsoft Inc. ( 粤ICP备18051196-1 )

GMT+8, 2018-11-17 22:56 , Processed in 0.071245 second(s), 6 queries , File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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