Наши преимущества

Delphi - рисование ( Image>Paintbox>dxpaintbox>dxdraw )

Так ВРОДЕ пошло. Сначало в памяти потом методом Bitbtl ( спасибо, нормально работает ) на paintbox вывожу нужный кусок. Моргание убралось после перестановки койкакого кода местами, головой думать надо. Ну посмотрим что будет дальше. А как вообще память расходуеться при таком методе, не слишком?
 
Убери из отрисовки:
- strtoint(), лучше держи в памяти готовый массив INT-ЗНАЧЕНИЙ;
- сравнение с текстовой строкой 'AB'
- TextWidth - тоже не самая быстрая функция.
Удачи!
 
Оператор IF вроде сам по себе медленный, только чем его заменишь.
 
Последнее редактирование модератором:
Если mastexx_area - трёхмерный массив, то работать надо только с последним измерением: TmpArr := mastexx_area[x2, y2];

Хранить координаты в виде строк действительно нехорошо.

bmp_drawtexx.Canvas можно оптимизировать с использованием with.

Примерно так получится:
Код:
with bmp_drawtexx.Canvas do begin
  if mastexx_param[global_x, global_y,6]='AB' then begin
    TmpArr := mastexx_area[x2, y2];
    TextOut(TmpArr[0] + (TmpArr[2] div 2 - TextWidth(mastexx_text[x2,y2]) div 2),
   TmpArr[1], mastexx_text[x2,y2] );
  end;
end;

Наверняка можно ещё что-нибудь оптимизировать.
 
Дело не в операторе IF...
Будет быстрее, если данные держать не в текстовых строках а сразу в int значениях.
 
Попробуем обязательно, просто на все время не хватает. Может завтра.
 
Ведь от with не большая польза, хотя конечно правильно надо все оптимизировать, буду теперь юзать его.
С ходу не понял что это такое TmpArr := mastexx_area[x2, y2];
А вот чего у меня был mastexx_area в string хотя я храню в нем int не понятно и мне, но уже все перевел.
 
Последнее редактирование модератором:
Я думал (может, и не верно) что mastexx_area - трёхмерный динамический массив, например, array of array of array of integer.
Тогда TmpArr := mastexx_area[x2, y2] (где TmpArr - одномерный динамический массив, например, array of integer) понижает размерность до 1, что даёт неплохой прирост скорости за счёт исключения последующего дублирования достаточно сложного кода доступа к элементу трёхмерного массива (TmpArr[z] вместо mastexx_area[x2, y2, z]).
 
mastexx_area - трёхмерный НЕдинамический массив. Пока я не роботал с динамическим, че то не получилось. А ка юзать этот TmpArr, что будет в переменных на него записано?
 
Ладно, ВСЕМ СПАСИБО, благодаря вашей помощи дело сдвинулось, надеюсь и в дальнейшем пойдет. ТЕМУ МОЖНО ЗАКРЫВАТЬ.
 
Верх