博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
wxGraphicsContext,wxGraphicsPath怎么使用
阅读量:6787 次
发布时间:2019-06-26

本文共 1446 字,大约阅读时间需要 4 分钟。

hot3.png

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

你可能感兴趣的文章