void CContent::DrawContent(idvc::IPainter* p)
{
// 确定应重新绘制的无效长方形
idvcfrw::CInvalidRegion InvalidRegions(draw_rect, valid_rect);
for(int i = 0; i < InvalidRegions.size(); ++i)
{
// 得到对应于下一个无效区域的长方形
idvc::drect rect = InvalidRegions[i];
// 查找并重新绘制与无效长方形相交的节点
NodeSet nodes = graph->HitNodeTest(rect.left, rect.top, rect.right, rect.bottom);
for_each(nodes.begin(), nodes.end(), DrawNode(p,scale));
// 查找并重新绘制与无效长方形相交的边
EdgeSet es = graph->HitEdgeTest(rect.left, rect.top, rect.right, rect.bottom);
for_each(es->Begin(), es->End(), DrawEdge(p,scale));
};
}; |