1.RenderBlock
RenderBlock继承自RenderBox最后继承自RenderObject,浏览器的绘制过程是通过循环调用子节点的paint()函数实现的。刷新的路径是:FrameView--> RenderLayer--> RenderBlock--> RendeBox具体调用流程图如下:
2.RenderImage:
RenderImage继承于RenderReplaced继承于RenderBox继承于RenderObject。父节点会调用子节点的(即RenderBox)的pait()函数,这里RenderReplaced重写了RenderBox的layout()函数和pait()函数(RenderObject的实现类通常都会自己实现layout()和pait())。RenderImage的paintReplaced()进而调用GraphicsContext的drawImage()实现具体的绘制。对于不同的图形引擎GraphicsContext有不同的实现。