Форум: "Основная";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];
ВнизКак быстро выводить (прорисовывать) графическую информацию на Canvas? Найти похожие ветки
← →
dimonf (2001-12-24 17:15) [0]Господа програмисты, я рисую на TPanel с помощью Canvas. На Canvas я вывожу 960 записей из таблицы.
Для рисования я использую Paint:
procedure TPanel.Paint;
begin
MyRect.Left:=40 ; MyRect.Top:=80; MyRect.Right:=247; MyRect.Bottom:=107;
For Count:=1 to 960 do
begin
Canvas.TextOut(Rect.Right,Rect.Top+30,"Demos");
end;
end;
Почему-то у меня долго идет формирование
изображения. И довольно заметно прорисовываеться Canvas, если я начинаю его двигать с помощью ScrollBox.
Может надо дополнительно использовать: MyCanvas : TCanvas?
Рисовать вначале на MyCanvas а потом копировать на TPanel?
Или еще как нибуть извратиться?
← →
dimonf (2001-12-24 18:03) [1]Нет мыслей?
← →
dimonf (2001-12-24 20:55) [2]Народ, неужели ни кто не знает???
← →
SergVlad (2001-12-24 21:05) [3]Для вывода текста существуют компоненты типа TRichEdit.
Рисовать "лобовыми" методами на TCanvas - это для практики начинающим.
Хотите найти быстрые решения - создайте собственный DirectX.
А стоит ли ?
← →
dimonf (2001-12-24 21:57) [4]Я бы с удовольствием воспользовался TRichEdit-ом но он к сожелению не делает таблиц, а мне нужно позарез выводить данные в таблицу.
Базы данных мне не подходят, вообще ни как :(((
А компаненты типа FreeReport вообще полной отстой. Правда у меня Demo версия, а полный дистрибутив для меня дорог.
Так что приходиться писать самому ручками на TCanvas.
← →
SergVlad (2001-12-24 22:10) [5]Полный отстой, господин хороший, Ваши мысли, да и дела, судя по всему.
Для вывода в таблицы существует TStringGrid.
Для вывода в таблицы из баз данных - TDBGrid, соответственно.
QReport, FastReport (FreeReport - вообще бесплатная ветка FR), Crystal Report, Report Smith и пр. вообще не для Вас, похоже, создавались.
Задачу - на стол.
Тогда и будем говорить.
← →
dimonf (2001-12-24 22:37) [6]Моя задача выводить данные полученные с прибора который подключен к Com порту.
Данные надо выводить на белом фоне в таблицу. Точно также как они должны
быть на листе после распечатки. Вверху должена быть шапка с рашифровкой пораметров. При просмотре данных с помощью ScrollBox шапка должна быть неподвижной. (Прихоть заказчика).
Связываться с базой нельзя, так как снимаю распечатки с приборов с помощью дохлого ноутбука.
Все то, что мне перечислили вверху я использовал. Не подходит :(
Вот я и полез в TCanvas.
Получаеться, но я завяз. Создал TPanel на которую хочу выводить данные. Но при прорисовке Canvasa TPanel-и с поможью OnPaint у меня (если таблица большая и много информации) таблица начинает дергаться. Придумал что надо сделать MyCanvas:=TCanvas.Create(self); потом рисовать один раз таблицу с данными в памяти. А при выводе на TPanel (имею введу ее Canvas) с помощью OnPaint, определять кусок Canvas-а, который я реально увижу в окне (а не весь Canvas) и копировать его из памяти в TPanel c помощью CopyRect.
Но это теория а на практике полный завал. Немогу сформировать TCanvas в памяти.
Помогите плиз. :)))
← →
Фе (2001-12-24 23:24) [7]С помощью "дохлого" ноутбука считываешь данные с N приборов объемом M тактов и записываешь в текст. файл из M строк, где каждая строка
есть множество значений снятых с N приборов, разделенное символом DLM.
Передаешь файл на обработку в свою прогу.
Что она умеет:
Считывать из текст файла j-строку, парсить по DLM на N-слов и записывать в StringGrid.Cells[i,j].
Вот и все остальное - на автомате.
Св-ва FixedCols и FixedRows по 1 - в них заносишь свою шапку и нумерацию строк.
← →
valery_f (2001-12-25 12:00) [8]Рисование будет долгим и мигающим, т.к. вывод идет непосредственно в "видимый" канвас и при каждом TextOut оно будет пытаться перерисоваться. Посему нужно у этой панели:
1) перебить WM_ERASEBACKGROUND, чтобы он не затирал картинку.
2) в методе Paint рисовать во внутренний битмап и BitBlt"ом отплевывать прямо на DC компонента за один шаг:
BitBlt(Canvas.Handle,0,0,Width,Height,TempBmp.Canvas.Handle,0,0,SRCCOPY);
Это будет быстрее всего и не будет мигать. Что касается грида, то при смене содержимого КАЖДОЙ ячейки он будет перерисовываться - это очень долго.
2Фе> городить файлы на пустом месте... еще можно откидывать данные в Exel :)))))
← →
EAlexander (2001-12-25 12:40) [9]A CanvasMetafile использовать не судьба. :) И рисовать на нем достаточно быстро и в файлик сохранить можно. :)
← →
Фе (2001-12-25 12:56) [10]1.Если идет съем сигналов с приборов, вполне может потребоваться последующий анализ данных - для этого и совет дан - вести лог файл.
Если это не надо, значит не надо.
2. Первый раз слышу, что нужна какая-то особенная скорость вывода текста для просмотра(а понимать-то чел успеет то, что выводится ?).
И сколько строк и колонок надо вывести ? 10 тыс х 10 тыс ?
Или это просто самоцель ?
Пользуйся TStringGrid или ломайся дальше.
Мне кажется, задача искусственно выморочена.
← →
Polevi (2001-12-25 13:06) [11]Действительно - проще всего использовать TStringGrid
Если уж хочется ручками рисовать - можно делать это в TStringGrid.OnDrawCell
← →
valery_f (2001-12-25 13:43) [12]2 Polevi & Фе. Grid действительно проще, но при частой смене данных моргание будет большим. К тому же - ноутбук дохлый (не забыли?), а посему мограние и медленность отрисовки вылезут в полный рост. Давно ли вы терзали грид на медленной тачке? Да еще чтобы обмен не страдал?
← →
Фе (2001-12-25 14:27) [13]Все равно не ВЕРЮ.
Надо искать методически правильные решения, а не устраивать гонки а"ля
Интел - Окошки.
При разрешении 1024х768 в окно влезет ~24 строки и допустим 10 столбцов.
Это всего 240 ячеек.
В памяти хранить массив значений от прибора считываемых за цикл.
Измениться между циклами могут и не все.
Отображать изменившиеся.
Ну и тд.
← →
Anatoly Podgoretsky (2001-12-25 15:10) [14]Все равно, что то не то, данные поступают по компорту, значит их не может быть много за секунду, изменяются явно не все 960, ну я бы не сказал, что StringGrid медленно работает на старых компьютерах, тем более что все 960 явно не помещатся на экране. Что то не то в постановке, да и при современной цене компьютеров может стоит смотреть с этой стороны?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c