我遇到了以下问题。我正在使用原生GDI +在Windows窗体的Panel表面上绘图(绘图算法在本机DLL中,由P / Invoke调用)。一切都很好,但直到一个改变面板的大小。如果它缩小了,它就会被正确渲染。但是,如果它被放大,只有Panel区域的与原始大小相对应的部分由GDI +重新绘制。
为什么会这样?当Panel调整大小时,我是否真的必须每次都创建新的Graphics对象?
答案 0 :(得分:2)
Hans Passant在评论中回答:
You found out why, the Graphics object no longer matches the state of the window. You are assuming that it is expensive to create. It isn't, it only costs couple of dozen microseconds. It is only expensive to keep it around, needlessly using memory. Anyhoo, you need to recreate it when the window state changes.
答案 1 :(得分:0)
假设你正在小组的油漆事件中进行绘图......如果不是这样,请告诉我。
在调整大小时尝试在面板上调用.Invalidate。