Я сделал элемент управления в c ++, чтобы позволить пользователю выбирать позицию в неправильном поле с различными позициями, некоторые из которых заблокированы, некоторые заполнены, с такими характеристиками:
Может создавать несколько столбцов в нескольких строках (не одно и то же, поэтому первая строка с 3 столбцами может быть, вторая - с 1, а третья - с 5)
Различные состояниякаждая позиция: заблокирована, заполнена, пуста, выбрана (поэтому она может иметь некоторые из них одновременно: заблокирована и пуста, заблокирована и заполнена, пуста и выбрана)
Пользователь можетвыберите одну или несколько позиций
Имеются текстовые подсказки и различные фоновые изображения для каждой заполненной или пустой позиции.
Контекстное меню для добавления / удалениястроки / столбцы.
Заголовки строк и столбцов, числовые / буквенно-цифровые, по возрастанию / по убыванию.
Структура элемента управления Container->(nRows x RowClass) и RowClass -> (nCols x ColumnClass).Каждый столбец содержит TableLayoutPanel, поэтому я могу имитировать застрявшие и поднятые эффекты.
Просматривая различные темы в Интернете, я нашел несколько идей, и улучшения, которые я сделал для скорости, в основном заключаются в SuspendDrawing с SendMessage (для созданияи измените размер всех строк и столбцов перед их рисованием), дважды буферизуя каждый элемент управления и добавляя метод BeginEdit / EndEdit в контейнер, который SuspendDrawing и блокирует изменение размеров строк и столбцов при создании строк и столбцов (и то же самое для каждого RowClass).
Он работает не так плохо с относительно небольшими блоками, скажем, 20 строк x 20 столбцов, но когда он имеет 40 строк x 30 столбцов (1.200 TableLayoutPanel's), он работает очень медленно даже на быстром компьютере.
Я также пытался использовать одну TableLayoutPanel (с необходимым количеством столбцов) для RowClass, но проблема в том, как нарисовать границы, чтобы выделить каждый столбец отдельно, всплывающие подсказки и фоновое изображение для каждой ячейки.
Итак, вопрос:Могу ли я попробовать какие-нибудь улучшения?
Я думал, что такие стратегические игры, как warcraft или аналогичные, имеют хорошую скорость на экране с тысячами графики и вычислений, но я не профессиональный программист, такЯ не знаю, какой может быть технология, и если это правильный путь ..
Может быть, это может быть что-то вроде изображения с рядом изображений или что-то отличное от класса классов классов,но я понятия не имею ...
Вероятно, это проблема дизайна, поэтому любая идея о том, как создать быстрый элемент управления с этими спецификациями, будет отличной.
В любом случае, спасибо за чтение моеговопрос, любые комментарии будут приветствоваться!Miguel