Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2011, 16:23   #1
Terrance!
Пользователь
 
Регистрация: 12.05.2010
Сообщений: 66
По умолчанию Самый быстрый способ задать цвет пикселю

Подскажите, есть ли способ установить цвет пикселю на экране, так чтоб это было быстрее чем
Код:
Canvas.Pixels[x,y]:=
или
Код:
setpixel(DC,x,y,color)
P.S. если первым способом выводить на экран даже небольшую картинку 150 на 150 пикселей, то это будет очень медленно,вторым способом получилось быстрее, но всё равно, слишком медленно.
А ведь каким - то образом все пиксели на мониторе сменяются (смысле в обычной жизни, там окно передвигаем, мышку двигаем) и это не сильно грузит комп.
Заранее спасибо!
Terrance! вне форума Ответить с цитированием
Старый 01.12.2011, 17:09   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

они меняются всем блоком.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.12.2011, 17:11   #3
Terrance!
Пользователь
 
Регистрация: 12.05.2010
Сообщений: 66
По умолчанию

ув. Пепел Феникса можно по подробнее)
Terrance! вне форума Ответить с цитированием
Старый 01.12.2011, 17:22   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

если у вас картинка то копируете её всю сразу.
Canvas.Draw//или что там, не помню сейчас
ИшеИде//если АПИ.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.12.2011, 17:26   #5
Terrance!
Пользователь
 
Регистрация: 12.05.2010
Сообщений: 66
По умолчанию

неее, мне прям пиксели отдельно надо цветом зажечь, но всё равно спасибо!
Terrance! вне форума Ответить с цитированием
Старый 01.12.2011, 17:40   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

дык у вас два пикселя? или все-таки блок некий?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.12.2011, 17:40   #7
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

ScanLine[] чуть быстрее, но BitBlt() для быстрой 2д графики — наше всё.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 01.12.2011, 17:52   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
ScanLine[] чуть быстрее, но BitBlt() для быстрой 2д графики — наше всё.
я лично работаю в своей программке через GetDIBits/SetDIBits, сразу на все изображение.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.12.2011, 17:58   #9
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

если девайсы одного формата, BitBlt, возможно, будет чуть быстрее, т.к. она более "низкоуровневая", чем Get/SetDIBits, и не работает с DIB:

Цитата:
BitBlt returns an error if the source and destination device contexts represent different devices. To transfer data between DCs for different devices, convert the memory bitmap to a DIB by calling GetDIBits. To display the DIB to the second device, call SetDIBits or StretchDIBits.
Рельно разница может быть невелика.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 01.12.2011, 18:02   #10
Terrance!
Пользователь
 
Регистрация: 12.05.2010
Сообщений: 66
По умолчанию

Пепел Феникса: у меня есть куча точек, в каждой из которых хранится цвет, нужно цвет каждой отобразить, естественно, как вы и написали, самое простое это
Код:
canvas.draw
действительно, зачем изобретать велосипед?
но у меня эти точки вращаются в пространстве, все они - одна плоскость и тут мне понадобилось именно отдельно отображать каждую точку, вот, высылаю что пока получилось,
если вам не трудно, может вы посмотрите?
veniside: спасибо! Похоже то, что нужно!

Уже не прощаю !
Из правил :
Цитата:
4. Не использовать прикрепленные файлы для исходного текста программы. В любом случае следует приводить основные выдержки кода, относящиеся непосредственно к содержанию поста.
Любой код, который вы приводите, оформляйте тегом CODE (значок # в редакторе ответа). Для скриншотов сложных математических формул есть тег IMG (значок картинки там же). Если значки не видны, перейдите в расширенный режим редактирования.
Полный текст программы (в виде архива) может быть прикреплен по запросу кого-либо из форумчан, заинтересованных помочь вам.

Темы с вложениями вместо исходного кода, а также с неправильно оформленным кодом будут мгновенно закрываться, а нарушитель - получать нарушение №4.
Я вас не очень озадачил ?

Последний раз редактировалось mihali4; 05.12.2011 в 01:24.
Terrance! вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу самый быстрый способ работы с файлами trunc Общие вопросы Delphi 6 15.10.2011 12:21
Самый быстрый браузер Marsel737 Софт 31 30.08.2010 01:09
Самый быстрый способ получить изображение в заданном прямоугольнике? TwiX Мультимедиа в Delphi 4 04.04.2010 10:08
Самый быстрый способ проверить прокси? TwiX Работа с сетью в Delphi 6 15.02.2010 22:41
Предложите самый быстрый алгоритм! Gambler Общие вопросы Delphi 6 26.12.2006 22:44