平行路径问题

  1.    GraphicsPath pH;                         //定义一个gdi+路径。
        PointF NmlPT[ 6 ];
        NmlPT[
    0 ] = PointF(  110110 ); NmlPT[ 1 ] = PointF( 310, 110 ); NmlPT[ 2 ] = PointF( 310, 310  );
        NmlPT[
    3 ] = PointF( 410410  ); NmlPT[ 4 ] = PointF( 410, 510 ); NmlPT[ 5 ] = PointF(  110, 610 );
        pH.AddPolygon( NmlPT,
    6 );      //路径中添加一个多边形。
       
        Pen pn(Color(
    255,0,0,0),1);        //定义原路径使用的画笔。颜色为黑色,宽度为1。
        gra->DrawPath(&pn,&pH);        //绘制原路径。

        Pen wdpn( Color(
    0,0,0,0),16 );   //建立一个扩展画笔
  2.     pH.Widen(&wdpn);                    //用这个画笔扩充路径。

        pH.Outline();                              
    //取得路径的轮廓,这一步是必须的。
        pn.SetColor(Color(255,255,0,0));//用红色画笔绘制扩充后的路径。
        gra->DrawPath(&pn,&pH);

        PathData pd;                               
    //建立一个PathData变量
        pH.GetPathData(&pd);             //取得扩充后路径的PathData,PathData中存储了路径上所有的关键点

       
    //下面我仅仅是简单的将路径内外的点分开了,其中PathData中前面6个点是原多边形外面的点,后面6个点是原多边形内部的六个点。
        
    //注意这里的前六个点并不一定就是外面的点,需要根据路径的情况判断,具体的判断方法在这里就不说了。
        for( INT id = 0; id< pd.Count/2; id ++ )                 //用浅绿色绘制前六点。
        {
            Pen pm( Color(
    255,0,255,255 ), 2 );    
            gra
    ->DrawEllipse(&pm,pd.Points[id].X-3,pd.Points[id].Y-3,REAL(6),REAL(6) );
        }

       
    for( INT idx = pd.Count/2; idx< pd.Count; idx ++//用蓝色绘制后六个点。
        {
            Pen pm( Color(
    255,0,0,255 ), 2 );
            gra
    ->DrawEllipse(&pm,pd.Points[idx].X-3,pd.Points[idx].Y-3,REAL(6),REAL(6) );
        }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值