к вопросу об анимации графиков и рисунков

Автор calc4fem, 12 января 2013, 06:29

0 Пользователи и 1 гость просматривают эту тему.

calc4fem

можно ли создать "бегущую" ячейку (отсчитывающую секунды) в Calc?


ALexey7ov

Вот файл *.bas во вложении архива, импортируй его и проверь. Бегущая строка имеет границы по горизонтали от 1-го до 10-го столбца. Сначала создаётся электронная таблица, далее бежит строка. Условием остановки макроса является установка выделения на любую строку 2-го столбца. После этого, как бегущая строка дойдёт до выделения макрос останавливается, созданный документ закрывается без сохранения.

[вложение удалено Администратором]

Hasim

#3
Судя по ссылке, хотелось бы воспроизводить в Calc что-то вроде GIF-анимации (+ музыкальное сопровождение), например:
(это был бы хороший наглядный тест на быстродействие Calc`a)

PS. Почистил предыдущий GIF.

[вложение удалено Администратором]

Hasim

Первая попытка псевдо-анимации в Calc'e кончилась полным провалом.
Быстродействие не то, что малое, просто НИКАКОЕ!

Выкладываю два файла: для Calc и Excel.
В обоих файлах листы с "1" по "25" содержат кадры со значениями цвета пикселей вышеприведенного GIF'a в формате
x   y   r   g   b
x,y - координаты пикселя
r,g,b - значения красного, зеленого, синего цвета

На листе "dance" рисуется изображение по простому алгоритму:
сначала цвета пикселей загружаются в массивы,
затем построчно закрашиваются ячейки соответствующими цветами.

Макрос запускается кнопкой на панели инструментов "Рисовать".

Дальше рисования только первого кадра с листа "1" дело не пошло.

Быстродействие удручающе паршивое, особенно для Calc'a.

И теперь вопрос: как же добиться такой же скорости, как на приведенной calc4fem сссылке???


[вложение удалено Администратором]

Hasim

Файл для Excel.

[вложение удалено Администратором]

JohnSUN

Честно говоря, Hasim, я не сразу понял почему файлы получились такими здоровенными.
Если бы мне пришлось делать что-то похожее на тот ютубовский ролик, я бы сделал что-то типа приложенного файла, заснял бы ролик и смонтировал фильм просто увеличив скорость в два-три раза... Ну, или взял бы компьютер пошустрее.

[вложение удалено Администратором]
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Hasim

Ну, проблема то понятно, что в Бейсике.
Вот JohnSUN заменил при закрашивании ячеек функцию Бейсика .CellBackColor на встроенную функцию STYLE и скорость сразу возросла.
Но перебор ячеек остался макросом Бейсика. И это тормозит. Понятно, что надо отказаться от тормознутых макросов Бейсика.
А это значит, что надо писать собственную функцию (на С++, например), перебирающую ячейки.

JohnSUN

#8
Цитата: Hasim от 11 февраля 2013, 23:39
Ну, проблема то понятно, что в Бейсике.
...Но перебор ячеек остался макросом Бейсика...
И это тормозит.
Ну, не совсем так. Макрос вообще не трогает ячейки с данными. Всё что он делает, это в цикле меняет номер кадра в ОДНОЙ ячейке. Данные из листа Move подтягиваются в лист Data функцией OFFSET().
Наверняка даже эту схему раскрашивания можно улучшить (ускорить) за счет уменьшения количества пересчетов.

PS. Мне только кажется или действительно этот вариант не только меньше по размеру, но и чуть шустрее?

[вложение удалено Администратором]
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Hasim

Положение с быстродействием Calc'a даже хуже,чем казалось.
Он и встроенные функции пересчитывает очень медленно.
И халтурит при этом, пересчитывает функции только в тех ячейках, что видны на экране.
Достаточно увеличить масштаб раза в 4 (до 200%), как скорость резко возрастает.

JohnSUN

Цитата: Hasim от 12 февраля 2013, 15:24
Он и встроенные функции пересчитывает очень медленно.
И халтурит при этом, пересчитывает функции только в тех ячейках, что видны на экране.
Ну, опять спорная формулировка... Это я насчет "халтурит".
"Вычислительные" функции Calc считает очень быстро, "поисковые" (типа VLOOKUP'а или INDEX(MATCH()) - в зависимости от количества просматриваемых данных, а "оформительские" (всякие разные раскрашивания) считает быстро и медленно отрисовывает. И раз уж известно, что рисовать будет долго, то зачем его напрягать рисованием за пределами окна? Чтобы тормоза увеличить?
Цитата: Hasim от 12 февраля 2013, 15:24
Достаточно увеличить масштаб раза в 4 (до 200%), как скорость резко возрастает.
Да, я во время тестирования тоже обратил на это внимание...
Цитата: Hasim от 12 февраля 2013, 15:24
Положение с быстродействием Calc'a даже хуже,чем казалось.
С чем сравниваем? С Excel'ем? Я, например, с трудом себе представляю как в Excel'е нарисовать то же самое - отсутствие функции STYLE() заставляет всё рисовать кодом, так как было в твоем первом варианте.
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Hasim

Excel кодом рисует с той же скоростью, что Calc функцией STYLE.