2017.6.16 创建路径层

路径层 就是开辟一块独立的区域,将字符串圈起来,不受周围环境的影响。 下面的例子就是将之前显示的文本“机械工程”通过路径层将其保护起来,并通过画网格的方式对比出效果。

首先创建路径层,通过BeginPath()开启路径层,pDC->EndPath()关闭路径层。中间用Rectangle()画出矩形,画矩形需要知道两个点的坐标,字符串的左上角的坐标在创建字符串的时候就知道了,右下角的坐标需要通过GetTextExtent() 函数来获取,它的返回值是CSize类的对象,直接通过zx. zy 就可以得到所需坐标。

void CTEXTView::OnDraw(CDC* pDC)
{
    CTEXTDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc)
        return;

    // TODO:  在此处为本机数据添加绘制代码
    /********************wjl***********************
            1.文本显示
            2.路径层  就是将所选择的区域产生于整体不同的效果
    *********************wjl********************/
    //CString str("机械工程");
    CString str;
    str = "机械工程";
    pDC->TextOut (50,50,str);

    CSize sz = pDC->GetTextExtent(str);  // GetTextExtent 函数 返回一个CSize 类 的 对象 

    str.LoadString(IDS_XIAOBEI);
    pDC->TextOutW(0,200,str);

    // 创建路径层  (用一个矩形把 “机械工程”框起来 )

    pDC->BeginPath();  // 开启路径层

    pDC->Rectangle(50,50,50+sz.cx,50+sz.cy);  // 获取字符串的坐标 创建矩形窗口

    pDC->EndPath();   // 关闭路径层

    pDC->SelectClipPath(RGN_DIFF); // 路径层与窗口互操作功能

最后要通过SelectClipPath函数进行互操作,也就是要求这个路径层和周围环境达到什么效果,RGN_DIFF是剪切效果。
下面通过划线展示效果

//  在窗口中画线条 
    for (int i = 0; i < 300; i += 10)
    {
        pDC->MoveTo(0,i);
        pDC->LineTo(300,i);
        pDC->MoveTo(i, 0);
        pDC->LineTo(i, 300);

    }

这里写图片描述

pDC->SelectClipPath(RGN_AND); // 另一种互操作方式
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangxiaobei2017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值