wxGraphicsContext,wxGraphicsPath怎么使用

wxGraphicsContext是wxWidgets高级绘图类。

wx的手册上有个如下的Demo:

void MyCanvas::OnPaint(wxPaintEvent &event)
{
        // Create paint DC
        wxPaintDC dc(this);
        // Create graphics context from it
        wxGraphicsContext *gc = wxGraphicsContext::Create( dc );
        if (gc)
        {
            // make a path that contains a circle and some lines
            gc->SetPen( *wxRED_PEN );
            wxGraphicsPath path = gc->CreatePath();
            path.AddCircle( 50.0, 50.0, 50.0 );
            path.MoveToPoint(0.0, 50.0);
            path.AddLineToPoint(100.0, 50.0);
            path.MoveToPoint(50.0, 0.0);
            path.AddLineToPoint(50.0, 100.0 );
            path.CloseSubpath();
            path.AddRectangle(25.0, 25.0, 50.0, 50.0);
            gc->StrokePath(path);
            delete gc;
        }
}

 我一般在windows使用wx,可事实上,这段代码没效果。

所以我就去看了一下sample(Drawer)

精简了一下,使用方法如下:

 wxGCDC gdc;
 wxGraphicsRenderer* const renderer = wxGraphicsRenderer::GetDefaultRenderer();
 wxGraphicsContext* gc;
 if ( wxPaintDC *paintdc = wxDynamicCast(&dc, wxPaintDC) )
 {
  gc = renderer->CreateContext(*paintdc);
 }
 else if ( wxMemoryDC *memdc = wxDynamicCast(&dc, wxMemoryDC) )
 {
  gc = renderer->CreateContext(*memdc);
 }
 if (gc)     
 {        
  gc->SetPen( *wxRED_PEN ); 
  wxGraphicsPath path = gc->CreatePath();         
  //操作path ...
  //stroke是显示路径 
    gc->StrokePath(path); 
    //另外fillPath是填充路径,closePath是连接首尾点,会多一条线出来 
   }

转载于:https://my.oschina.net/u/264056/blog/384955

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值