为了消除闪烁,我使用 wxBufferedPaintDC 代替 wxPaintDC。但是问题来了。在我的绘图函数中,为了绘制三次贝泽曲线,我必须使用 GetGraphicsContext 创建路径。我的问题是为什么 GetGraphicsContext 在使用 wxBufferedPaintDC 时返回一个 NULL 指针。
void DotGraphView::OnPaint(wxPaintEvent & WXUNUSED(evt))
{
wxBufferedPaintDC dc(this);
PrepareDC(dc);
PaintBackground(dc);
wxGCDC &gdc = (wxGCDC&)dc;
wxGraphicsContext * gc = gdc.GetGraphicsContext(); /* here gc = NULL */
wxGraphicsPath path = gc->CreatePath(); /* program collapses here */
...
}