Возможные проблемы при работе с TCanvas больших размеров
Оформил: DeeCo
Автор: Тимофей Загуренко
Проблема. Так получилось, что передо мной встала
задачи работы с канвой (TCanvas) больших размеров (от 2000 и более точек в одном
измерении). Через достаточно короткое время работы я обнаружил, что методы
TCanvas иногда ведут себя некорректно. Некорректность поведения заключалась в
том, что при определенных условиях графические примитивы, например, прямые
линии, либо отображались неправильно, либо просто исчезали. Проверка и
перепроверка текста программы ничего не дала. Попытка найти какую-либо
информацию о возможных особенностях работы с канвой таких размеров также ни дала
положительного результата (может быть, просто плохо искал). Пришлось разбираться
самому, а затем и обратиться за советом к некоторым жителям Королевства.
Результат. В ходе работы удалось некоторым образом
локализовать условия возникновения изложенной выше ситуации.
Поскольку большое значение имеет платформа, а именно Windows
9x, возникло предположение, что возникающие проблемы являются не глюком или не
ошибкой TCanvas. Просто именно под этой платформой возможности графики
ограничены.
Напрашивающиеся выводы по использованию TCanvas больших
размеров.
- 1. Не пытайтесь рисовать все сразу, а отображайте только то что,
действительно необходимо. Если по каким-либо причинам это невозможно, и вам
просто необходимо перерисовывать сразу весь TCanvas, используйте графические
примитивы, принудительно ограничивая их размер, допустим 1500 точек.
- 2. Может быть, воспользоваться советом Рустама Кафарова:
"Итак,
решение одно (во всяком случае, одно я нашел, может решений больше) -
используйте платформу NT. Под Windows 2000 все работает НАМНОГО ЛУЧШЕ! Советую
просто поменять систему. Если в вашей программе будет ремарка "разработана
специально под NT", то это не будет минусом для программы"
P.S. В качестве примера я предлагаю вашему вниманию
небольшой проект TCanvas.zip, в
котором возникают изложенные выше проблемы. Суть проекта - отрисовка разными
методами сетки с шагом 40 точек.
К сожалению, мне не удалось подобрать такой режим, чтобы проблема
возникало на любой машине, на которой стоит Windows 9x. Поэтому я хотел бы
попросить сразу не забрасывать меня помидорами тех, у кого под Windows 9x все
будет работать корректно. Возможно, что все вышеописанное является неким частным
случаем, и автор хотел бы получить отклик от тех, кому интересна эта тема.
Особая благодарность Кафарову
Рустаму за оказанную помощь.
|