Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];

Вниз

MoveTo, Pen.Color и LineTo слишком медленные, надо быстрее   Найти похожие ветки 

 
D_V_I   (2002-11-28 13:15) [0]

Пожалуйста помогите!! У меня очень большой цикл вывода на Image.Canvas лайнов и мовов, и каждый раз меняется Pen.Color - это занимает дикое количество времени(7 секунд, а то и 20), может можно как-то через память(поточечно, побыстрее)? Подскажите как? Заранее благодарен.


 
Starkom   (2002-11-28 13:18) [1]

может прямо Canvas.Pixels[x,y].color:=нужный. Хотя, по идее, это еще медленее работать должно. Я как-то таким образом треугольник заливал в 1-х дельфях, работало жутко медленно.


 
Игорь Шевченко   (2002-11-28 13:39) [2]

Можно а) через Bitmap в памяти и последующим BitBlt
б) через DC Pen


 
D_V_I   (2002-11-28 13:41) [3]

Будте добры, поисните работу с BitBlt


 
Слесарь Матерящийся   (2002-11-28 13:43) [4]

>Pen.Color

А что мешает готовить пёрышки и кисти заранее?


 
d_v_i   (2002-11-28 13:51) [5]

на каждом шаге цикла надо менять Pen.Color - дико медленно


 
HanIP   (2002-11-28 13:52) [6]

рисуй через WinApi очень быстро получается


 
Игорь Шевченко   (2002-11-28 13:52) [7]

Пример в controls.pas

procedure TWinControl.WMPaint(var Message: TWMPaint);


 
Бурундук   (2002-11-28 14:33) [8]

Сначала всё-таки последуй совету тов. Слесаря Матерящегося (28.11.02 13:43)
и создай все нужные перья заранее.
(Pen.Assign работает гораздо быстрее, чем изменение св-в пера):

const
penRed = 0;
...

for i := 0 to
PreviouslyCreatedPens[i] := TPen.Create;

PreviouslyCreatedPens[penRed].Color := clRed;
...

А при рисовании не Pen.Color := clRed, а
Pen.Assign(PreviouslyCreatedPens[penRed]);

Может оказаться, что этого будет вполне достаточно.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.013 c
1-28123
sen
2002-11-27 16:01
2002.12.09
Сокеты в Делфи


1-28004
GooRoo
2002-11-29 21:19
2002.12.09
масштабируемость приложения


3-27805
DiamondA
2002-11-22 07:39
2002.12.09
InterBase and TerminalService??????????


7-28321
Anar
2002-10-07 00:51
2002.12.09
Как перезагрузить комп в Windows XP?


3-27909
Oleon
2002-11-22 10:45
2002.12.09
Шаблоны платежных документов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский