查看单个帖子
旧 2009-05-06, 06:54 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】odamfcapp 9all versions0 - rectframe refresh ist slow for dw

odamfcapp (all versions) - rectframe refresh ist slow for dw
odamfcapp (all versions) - rectframe refresh ist slow for dwg bigger 1 mb.
hallo,
i have a dwg width size 4mb.
refresh time for recframe is 1,9 sec, if mouse move hover area width graphic elements .
refresh time for recframe is 0,028 sec, if mouse move hover area without graphic elements.
is it possible to make it faster?
the speed seems to be directly linked with the size of the drawing and cont of enclosed graphic elements .

hello,
yes, the partial update make redrawing of all entities that corresponds to area of selection rectangle. selection rectangle, grip points and etc. is a transient drawables. this is known performance issue, to make transient drawables painting on top of prerendered entities cache, without entities redrawing. but currently this feature is not implemented. in acad transient drawables (selection rectangle, grip points, entities highlighting) draws on top of entities cache, which not changes while entities is not modified, removed or added (in arx2009 implemented new class acgitransientmanager for more convenience transient drawables handling).
you can implement workaround to avoid redrawing of entities while selecting:
1) change selecting rectangle transient drawable class to your own selecting rectangle class, remove adding of drawable to gsmodel.
2) make painting of your selecting rectangle after pdevice->update(); call by your current window system calls. for example for mfc in odamfcapp:
cdc *cdc = getdc();
// draw selection rectangle
//cdc->draw3drect(0, 0, 100, 100, rgb(255, 255, 255), rgb(128, 0, 2));
releasedc(cdc);
i know - this is hard to make solution, but it can be implemented on client side.
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)