九宫格贴图函数

void Draw9(
                   HDC hDC,                 // 目标DC
                   const CRect& rcDraw,     // 要绘制的区域
                   Image * pImage,          // 加载了图片资源的Image对象
                   const CRect& rcRes1,     // 资源左上角区域  
                   const CRect& rcRes2      // 资源右下角区域
                   )
{
    Graphics graph(hDC);
    RectF rcf1(rcDraw.left, rcDraw.top, rcRes1.Width(), rcRes2.Height()); 
    RectF rcf2(rcDraw.left+rcRes1.Width(), rcDraw.top, rcDraw.Width()-rcRes1.Width()-rcRes2.Width(), rcRes1.Height()); 
    RectF rcf3(rcDraw.Width()-rcRes2.Width()+rcDraw.left, rcDraw.top, rcRes2.Width(), rcRes1.Height()); 
    RectF rcf4(rcDraw.left, rcDraw.top+rcRes1.Height(), rcRes1.Width(), rcDraw.Height()-rcRes1.Height()-rcRes2.Height()); 
    RectF rcf5(rcDraw.left+rcRes1.Width(), rcDraw.top+rcRes1.Height(), rcDraw.Width()-rcRes1.Width()-rcRes2.Width(), rcDraw.Height()-rcRes1.Height()-rcRes2.Height());
    RectF rcf6(rcDraw.Width()-rcRes2.Width()+rcDraw.left, rcDraw.top+rcRes1.Height(), rcRes2.Width(), rcDraw.Height()-rcRes1.Height()-rcRes2.Height()); 
    RectF rcf7(rcDraw.left, rcDraw.Height()-rcRes2.Height()+rcDraw.top, rcRes1.Width(), rcRes2.Height());    
    RectF rcf8(rcDraw.left+rcRes1.Width(), rcDraw.Height()-rcRes2.Height()+rcDraw.top, rcDraw.Width()-rcRes1.Width()-rcRes2.Width(), rcRes2.Height());
    RectF rcf9(rcDraw.Width()-rcRes2.Width()+rcDraw.left, rcDraw.Height()-rcRes2.Height()+rcDraw.top, rcRes2.Width(), rcRes2.Height()); 

    graph.DrawImage(pImage, rcf1, rcRes1.left, rcRes1.top, rcRes1.Width(), rcRes1.Height(), UnitPixel);  
    graph.DrawImage(pImage, rcf2, rcRes1.right+1, rcRes1.top, 1, rcRes1.Height(), UnitPixel);
    graph.DrawImage(pImage, rcf3, rcRes2.left, rcRes1.top, rcRes2.Width(), rcRes1.Height(), UnitPixel);
    graph.DrawImage(pImage, rcf4, rcRes1.left, rcRes1.bottom+1, rcRes1.Width(), 1, UnitPixel);
    graph.DrawImage(pImage, rcf5, rcRes1.right+1, rcRes1.bottom+1, 1, 1, UnitPixel);
    graph.DrawImage(pImage, rcf6, rcRes2.left, rcRes1.bottom+1, rcRes2.Width(), 1, UnitPixel);
    graph.DrawImage(pImage, rcf7, rcRes1.left, rcRes2.top, rcRes1.Width(), rcRes2.Height(), UnitPixel);
    graph.DrawImage(pImage, rcf8, rcRes1.right+1, rcRes2.top, 1, rcRes2.Height(), UnitPixel);  
    graph.DrawImage(pImage, rcf9, rcRes2.left, rcRes2.top, rcRes2.Width(), rcRes2.Height(), UnitPixel);

    graph.ReleaseHDC(hDC);

}

 

CDC memDC;
memDC.CreateCompatibleDC(&dc);
CBitmap memBmp, * pmemBmp;
memBmp.CreateCompatibleBitmap(&dc, rcWnd.Width(), rcWnd.Height());
pmemBmp = memDC.SelectObject(&memBmp);
memDC.FillSolidRect(rcWnd, 0xFFFF00);

CRect rcDraw = rcWnd;
Draw9(memDC.m_hDC, rcDraw, m_pImage, CRect(45,66,54,76), CRect(58,80,67,90)); 

dc.BitBlt(0, 0, rcWnd.Width(), rcWnd.Height(), &memDC, 0, 0, SRCCOPY);
memDC.SelectObject(pmemBmp);
ReleaseDC(&memDC);



 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值