![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Замена Chart - графика для слабых компьютеров? [D7, 95/98, XP]
Who_are_you? © (2014-04-24 14:58:00)При запуске программы на старом компе Pentium II, Win 98, ОЗУ-128 MБ получил огромные тормоза.
Стал анализировать и выяснил - то что летало на новом компе.
Это Chart. Ждать приходится около 3 минут.
Заремил с десяток строк, начинающиеся на Chart, - выполнение 2 секунды.
Посоветуйте как быстро (в смысле времени выполнения компьютером и времени написания программы) сделать графическое представление (X,Y) цифровых данных? Может у кого есть заготовки, Unit-ы ?
turbouser (2014-06-17 17:41:00) [21]
> Fail_rd
Как вы яхту назовете, так она и поплывет =)
Германн (2014-06-17 17:30:00) [22]
> 2-ом Fail_rd заполнен нулями?
Потому что во втором случае ты считываешь по адресу переменной, которая содержит ссылку на область памяти.
Ну и кроме того ты не сможешь одним вызовом ReadFile считать данные в двумерный динамический массив.
Who_are_you? (2014-06-17 17:22:00) [23]// 1
Fail_rd :array[1..100,1..8] of byte;
...
Resul:=ReadFile(hInFile,Fail_rd,N_strok_File,Bytes,nil);
// 2
Fail_rd :array of array of byte;
...
SetLength(Fail_rd, 100,8); //
Resul:=ReadFile(hInFile,Fail_rd,N_strok_File,Bytes,nil);
Почему в 1 случае Fail_rd заполняется, а 2-ом Fail_rd заполнен нулями?
Как воспользоваться динам. матрицой?
Styx (2014-06-17 16:37:00) [24]Вам виднее.
Who_are_you? (2014-06-17 12:03:00) [25]Продолжение: чтение с файла, обработка, замена Chart.
Всем большое спасибо за помощь по быстродействию при работе с файлами в темеДва байта в одно число
Получается, что не нужно читать фрагментами файл, а для быстродействия его нужно прочитать весь, запомнить в матрицу (у меня это n-кбайт строк по 10 байт), а потом делать математ. вычисления и отображать через BitMap.Canvas?
MBo (2014-06-11 19:43:00) [26]SetStretchBltMode c HALFTONE поможет улучшить качество сжатого изображения
brother (2014-06-11 11:56:00) [27]> плотность должна увеличиваться
чего? как было 72dpi,так и остается!
Inovet (2014-06-11 10:00:00) [28]> [30] Who_are_you? © (11.06.14 09:36)
> плотность должна увеличиваться, а на самом деле выбрасываются точки.
Откуда же он знает где там у тебя нужные точки, а где не нужные - для него все точки одинаковые.
А сразу выводить как надо почему не получается?
Who_are_you? (2014-06-11 09:36:00) [29]
brother © (10.06.14 17:20) [28]
это стретч ужимая картинку выкидиывает пикселы...
Спасибо, да, стретч.
Удивительно, уменьшая размер через стретч, плотность должна увеличиваться, а на самом деле выбрасываются точки.
P.S. Cкриншоты не знаю как на этом сайте выложить.
brother (2014-06-10 17:31:00) [30]зы. скриншоты покажи, что происходит...
brother (2014-06-10 17:20:00) [31]это стретч ужимая картинку выкидиывает пикселы...
Who_are_you? (2014-06-10 16:44:00) [32]Отображаю:
Canvas.draw(0,0,bitmap); //отрисовываем сам bitmap
А если так:
Image1.Canvas.StretchDraw(Rect(0, 0, Image1.Width,Image1.Height), Bitmap);
то теряется контрастность и пропадают точки.
Ширина и высота в обоих случаях одинаковая.
Может есть лучший вариант?
Я рисую 4-е графика, каждый имеет свой Bitmap, а потом нужно их разместить на форме в определенных местах.
Who_are_you? (2014-06-06 14:44:00) [33]
MBo © (06.06.14 13:02) [25]
Так это самое растяжение требуется или нет?
В данный момент нет.
А а дальнейшем хочу использовать как масштабирование.
MBo (2014-06-06 13:02:00) [34]Так это самое растяжение требуется или нет?
Who_are_you? (2014-06-06 12:55:00) [35]MBo © (06.06.14 12:47) [23]
А Вы понимаете, что такое Stretch?
Согласно справочнику:
Методы для вывода картинок на канву - Draw и StretchDraw, В качестве параметров указываются прямоугольник и графический объект для вывода (это может быть TBitmap, TIcon или TMetafile). StretchDraw отличается тем, что растягивает или сжимает картинку так, чтобы она заполнила весь указанный прямоугольник
MBo (2014-06-06 12:47:00) [36]А Вы понимаете, что такое Stretch?
Who_are_you? (2014-06-06 12:33:00) [37]brother © (05.06.14 17:40) [19]
смысл отрисовывать через Stretch, если отрисовываемая область равна (?) размеру выводимой области (канва формы)
Вся канитель из-за пожелания:
(для быстроты выполнения)
junglecat (25.04.14 09:50) [11]
как минимум, вывод графики надо буферизовать. Рисовать в Bitmap.Canvas, потом StretchDraw
Who_are_you? (2014-06-06 12:22:00) [38]Честно говоря,
так и не понял, чем лучше отображать на стареньком ноуте:
Canvas.draw
или
Canvas.StretchDraw(Rect
Bitmap.Width := ClientWidth;
Bitmap.Height:= ClientHeight;
// очистить форму
Bitmap.Canvas.FillRect(Rect(0,0,ClientWidth,ClientHeight));
// построить график
GrOfFunc;
// Canvas.draw(0,0,bitmap); //отрисовываем сам bitmap
Canvas.StretchDraw(Rect(0, 0, Bitmap.Width,Bitmap.Height), Bitmap);
brother (2014-06-05 17:42:00) [39]поясню: Вы реализовали BitBlt через StretchDraw, но зачем?
brother (2014-06-05 17:40:00) [40]как всегда опять не совсем то)
если Bitmap.Width, Bitmap.Height будут больше размеров формы, то что мы получим? и смылсы отрисовывать через Stretch, если отрисовываемя область равна (?) размеру выводимой области (канва формы)