Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Замена Chart - графика для слабых компьютеров? [D7, 95/98, XP]


Страницы:   1 2 3

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, если отрисовываемя область равна (?) размеру выводимой области (канва формы)


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо