Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скорость графики в Delphi 
:(
    Опции темы
mniip
Дата 9.8.2011, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 29.1.2010

Репутация: нет
Всего: нет



Например следующий код может исполниться за доли секунды:
Код

SomeCanvas.Pen.Mode:=pmNot;
SomeCanvas.Rectangle(0,0,500,500)


почему же когда я делаю вот так:
Код

var i,j:integer;
{...}
for i:=0 to 500 do
 for j:=0 to 500 do
  SomeCanvas.Pixels[i,j]:=not SomeCanvas.Pixels[i,j]

получается в сотни тысяч раз медленнее?

Я еще могу понять если бы он работал в 10 раз медленнее но в 100000 раз!.....

Че делать для ускорения производительности?
PM MAIL   Вверх
RomanEEP
Дата 9.8.2011, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 424
Регистрация: 18.5.2006
Где: Коломна

Репутация: 5
Всего: 8



использовать Canvas.ScanLine, гуглите. Вопросу уж 100 лет в обед
PM MAIL   Вверх
Чучмек
Дата 9.8.2011, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



Цитата(mniip @  9.8.2011,  13:49 Найти цитируемый пост)
почему же когда я делаю вот так:
получается в сотни тысяч раз медленнее?

А потому же, почему чтение файла посимвольно в тысячи раз медленнее чем по несколько кБ.
Решение аналогичное.
Код

procedure TForm1.Button1Click(Sender: TObject);
var p:pointer;
i:integer;
bm:tbitmap;
line:integer;
begin
bm:=tbitmap.Create;
bm.Monochrome:=false;
bm.PixelFormat:=pf24bit;
bm.Width:=form1.Width;
bm.Height:=form1.Height;
line:=trunc(bm.Height/2);
p:=bm.ScanLine[line];
for i:=25 to form1.Width-25 do
 begin
 pinteger(cardinal(p)+i*3)^:=rgb(130,255,150); //2 для pf16bit,3 для pf24bit, 4 для pf32bit
 end;

form1.Canvas.Draw(0,0,bm);

end;

Дальше сам разберешся



--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
RomanEEP
Дата 9.8.2011, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 424
Регистрация: 18.5.2006
Где: Коломна

Репутация: 5
Всего: 8



Цитата(Чучмек @  9.8.2011,  14:51 Найти цитируемый пост)
А потому же, почему чтение файла посимвольно в тысячи раз медленнее чем по несколько кБ.

не поэтому. Это свзяано, так скажем, с особенностью реализация обращения к Pixels в WinAPI

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0660 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.