wxWidgets:绘制自定义控件
wxWidgets:绘制自定义控件
以下代码演示了如何通过从 wxWindow 派生来开始创建自定义小部件(您自己绘制)。它创建了一个简单的基本按钮,它没有任何用处,但可以用作起点。
并不是说虽然这个例子绘制了一个矩形组件,但没有什么能阻止你改变绘制方法来绘制你喜欢的任何形状。
一些常见的错误
对于简单(即不包含子控件)控件,从 wxWindow 派生,而不是从 wxControl 派生,wxControl 是本机控件的基类。
不要在绘制事件之外使用 wxPaintDC(如果您绝对必须但最好将所有绘图限制为 wxEVT_PAINT 处理程序,请使用 wxClientDC)。
不要在 wxClientDC 上画一些东西,然后期望它会永远留在那里(错误,因为您的窗口管理器可能会随时丢弃您的画 - 例如,如果窗口被最小化或隐藏在其他东西后面 - 并且希望您可以将它画回来稍后接收绘画事件时)即始终启用绘画事件以绘制所有内容。解决这个问题的最好方法是将状态/数据与视图分开。(渲染例程读取描述当前状态的变量并根据这些变量进行绘制。当需要更改时,不要直接渲染它;相反,更新变量并调用重新绘制 - 如果编码良好,您的绘制例程应该抓住变化ÿ