62,620
社区成员
发帖
与我相关
我的任务
分享
List list = new LinkedList();
public void initList() {
list.add(image);
list.add(string);
}
public void renderSplash() {
list.remove(string);
list.add(newString);
Rectangle clip = bound;
g2.setClip(clip);
repaint();
}
public void repaint() {
for(Object element : list) {
if(element instanceof Image)
g2.drawImage(...);
else if(element instanceof String)
g2.drawString(...);
}
}
随便在这帖子上手敲的,关键是想知道这样的clip对draw有效吗[/quote]
记住每个“模型”的 bounds,然后在单步“擦除”的时候去通过 clip 限制绘制区域
的确在某些情况下,可以减少绘制负担
但是,如果你的 clip 中,与很多别的“模型”有重叠区域
那么,在调用绘制算法的时候
你依然必须把这些模型的绘制算法都调用一次才能实现完美的绘制
如果大量的模型有部分区域在 clip 中,而又有部分区域在 clip 外
其实,g2d 内部也得通过某些算法去进行判断
(它要不断的判断,该步绘制中:哪些区域是需要绘制的,哪些区域又无需绘制)
如果这样的情况过多,反而会加重算法负担
最终表现出现的绘制效率,可能会反而不如直接将全图进行绘制
最后,说一个著名的结论:
一切通过理论得出的效率优劣都是浮云
你只有通过实测对比,才能证明究竟哪一种绘制方式更适合你的程序
(可以通过计算:不同算法绘制前后的时间差,来进行对比)
List list = new LinkedList();
public void initList() {
list.add(image);
list.add(string);
}
public void renderSplash() {
list.remove(string);
list.add(newString);
Rectangle clip = bound;
g2.setClip(clip);
repaint();
}
public void repaint() {
for(Object element : list) {
if(element instanceof Image)
g2.drawImage(...);
else if(element instanceof String)
g2.drawString(...);
}
}
随便在这帖子上手敲的,关键是想知道这样的clip对draw有效吗[/quote]
记住每个“模型”的 bounds,然后在单步“擦除”的时候去通过 clip 限制绘制区域
的确在某些情况下,可以减少绘制负担
但是,如果你的 clip 中,与很多别的“模型”有重叠区域
那么,在调用绘制算法的时候
你依然必须把这些模型的绘制算法都调用一次才能实现完美的绘制
如果大量的模型有部分区域在 clip 中,而又有部分区域在 clip 外
其实,g2d 内部也得通过某些算法去进行判断
(它要不断的判断,该步绘制中:哪些区域是需要绘制的,哪些区域又无需绘制)
如果这样的情况过多,反而会加重算法负担
最终表现出现的绘制效率,可能会反而不如直接将全图进行绘制
最后,说一个著名的结论:
一切通过理论得出的效率优劣都是浮云
你只有通过实测对比,才能证明究竟哪一种绘制方式更适合你的程序
(可以通过计算:不同算法绘制前后的时间差,来进行对比)[/quote]好的 真心谢谢讲解啊
怎么又想起来这里水了
List list = new LinkedList();
public void initList() {
list.add(image);
list.add(string);
}
public void renderSplash() {
list.remove(string);
list.add(newString);
Rectangle clip = bound;
g2.setClip(clip);
repaint();
}
public void repaint() {
for(Object element : list) {
if(element instanceof Image)
g2.drawImage(...);
else if(element instanceof String)
g2.drawString(...);
}
}
随便在这帖子上手敲的,关键是想知道这样的clip对draw有效吗
怎么又想起来这里水了[/quote]
看这 ID ……
但是你就是那个戴眼镜的澳洲人……