请教下SelectClipRgn能否配合双缓冲使用

dahaiI0 2012-07-30 11:41:43
CImage加载图片,创建memdc,memdc通过SelectClipRgn设置剪裁区域(圆角矩形),然后把CImage加载的图片贴过去,再把memdc贴到目的DC上,但是显示的是矩形,圆角部分被黑色覆盖。

CPaintDC dc(this);
CRect rc(CPoint(0, 0), CSize(140, 138));
CRgn rgn;
VERIFY(rgn.CreateRoundRectRgn(0, 0, rc.Width(), rc.Height(), 5, 5));

CDC memdc;
VERIFY(memdc.CreateCompatibleDC(&dc));
memdc.SelectClipRgn(&rgn);

CBitmap btScreen;
btScreen.CreateCompatibleBitmap(&dc, rc.Width(), rc.Height());
CBitmap *pOldBitmapScreen = memdc.SelectObject(&btScreen);

CImage image;
image.LoadFromResource(AfxGetApp()->m_hInstance,IDB_BITMAP1);

image.BitBlt(memdc.m_hDC,0,0,image.GetWidth(),image.GetHeight(),0,0,SRCCOPY);
dc.BitBlt(100, 100, rc.Width(), rc.Height(), &memdc, 0, 0, SRCCOPY);
//释放的就省了

不想在目的DC上直接SelectClipRgn,连续搞几次怕效率比较低,求指导在线等
...全文
249 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dahaiI0 2012-07-30
  • 打赏
  • 举报
回复
自己顶一下。。
hotpos 2012-07-30
  • 打赏
  • 举报
回复
嗯

黑色是因为新创建的位图里面没东西。
先从dc里面拷一份过来就不是黑色的了。
dahaiI0 2012-07-30
  • 打赏
  • 举报
回复
回楼上的,dc.SelectClipRgn(&rgn);自然是可以,但是绘图贴图操作比较多,调用一次贴一次,效率比较低可能还有闪烁,想所有操作都弄到memdc,然后一次bitble到目的dc。

第二种没看懂,把目的DC拷到memdc,然后memdc设置区域,再memdc拷到目的dc?
hotpos 2012-07-30
  • 打赏
  • 举报
回复

memdc.SelectClipRgn(&rgn);
替换为
dc.SelectClipRgn(&rgn);


或者


//添加
memdc.BitBlt(dc, ..............)

//后面不用改
memdc.SelectClipRgn(&rgn);
源码直接下载地址: https://pan.quark.cn/s/854bd57df23a 在金融行业中,房产购置贷款是众多人在购置不动产时必须进行的一项财务规划。Matlab作为一种功能强大的数学及数据分析平台,经常被应用于各类复杂的运算,其中包括住房贷款的计算。本文将详细研究运用Matlab开发住房贷款计算程序的相关知识要点,以协助读者掌握如何借助编程技术处理实际的信贷问题。 1. **信贷种类** - **商业信贷**:此类贷款通常由金融机构提供,其利率会随市场行情变化,借款人可选用固定利率或浮动利率方案。 - **公积金信贷**:该类贷款获得政府机构的支持,利率一般低于商业信贷,但设有最高贷款金额的限制。 2. **偿付模式** - **等额本金偿付**:每月支付相同数量的本金,利息部分逐月减少,因此整体还款总额会逐步降低。 - **等额本息偿付**:每月支付固定金额的本金与利息组合,利息部分随本金的逐月减少而递减。 3. **住房贷款计算公式** - **等额本息偿付**:每月还款额=贷款本金×[月利率×(1+月利率)^(贷款期数)]÷[(1+月利率)^(贷款期数)-1]。 - **等额本金偿付**:每月应还本金=贷款总额/贷款期数,每月利息=(贷款余额-累计已还本金)×月利率。 4. **Matlab编程基础** - **变量设定**:在Matlab环境中,首要任务是设定贷款数额、年化利率、贷款时长等核心参数。 - **循环控制结构**:借助for循环来模拟每个还款周期的过程,进行本金与利息的计算。 - **函数构建**:将住房贷款的计算逻辑封装为函数,便于重复使用和测试不同条件下的结果。 5. **Matlab代码编写** - **等额本息函数实现**...

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧