我有一个所有者绘制的 TListBox (lbVirtualOwnerDraw),它的内容会动态更新(每秒最多可以更新 10 次)。列表框中一次最多可以有 300 个项目。每个项目可能有大约 5 行文本和与之关联的图像。每当刷新项目时,我都必须刷新(或使 TListBox 无效),以便 VCL 框架将调用 ListBoxDrawItem。但由于所有多余的重绘,这会对整体性能产生不利影响。所以我的问题是:
有没有办法只使包含一个项目或其一部分的绘图的画布的一小部分无效?(例如,包含一行文本或位图的矩形)。
我们如何在 Draw Item 中处理这样一个选择性的无效矩形?如果可以将整数作为刷新或无效的一部分传递,我可以在 DrawItem 中使用它来确定要刷新的内容。
有没有办法找到一个项目在 TListBox 上是否可见(按索引)?
提前致谢!