![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Возьмем пример: приложение в котором канва формы заполняется черным цветом этим циклом :
Код:
For x := 0 to Form.Width do For y := 0 to FormHeight do Form.Canvas.Pixels[x, y] := clBlack; Код:
Form.Canvas.Rectangle(0,0,Form.Width, Form.Height) Как он делает это быстрее? Как (можно такое вобще?) добиться того, что б первое делалось хотя б приблизительно как второе? Я ни в чем никогда не уверен... И в этом тоже... ![]() |
#2
|
|||
|
|||
![]() не знаю как ты проверял но второй вариант у меня быстрее намного выполняется.
|
#3
|
|||
|
|||
![]() Второе быстрее, т.к. нет постоянного "разрешения" точек. Еще быстрее должен быть FillRect, но, боюсь, эту разницу отследить будет тяжело.
На второй вопрос ответ простой - ScanLine. Эта процка как раз дает тебе возможность работать с памятью напрямую. При ее использовании скорость станет сравнима, а не в разы медленнее. |
#4
|
|||
|
|||
![]() А можно поподробнее про ScanLine... Это WinApi? Как она работает? И как ее использовать?
Я ни в чем никогда не уверен... И в этом тоже... ![]() |
#5
|
|||
|
|||
![]() Народ помогите!!!!!
Я немноо не понимаю этот сканлайн... ![]() Выложите сюда плиз процедуру рисования точки в одну строку.... тоесть : Код:
ScanLine[87,67] := Rgb(56,96,250); Код:
procedure StavTochka(x,y : Integer; r, g, b : byte); begin scanline... // тут собственно скан лайн end; ... {use} For i := 9 to 54 do StavTochka... Я ни в чем никогда не уверен... И в этом тоже... ![]() |
#6
|
|||
|
|||
![]() И большая просьба не кидайте тему... Я знаю что здесь есть люди которые могут сделать то, что я прошу...
![]() Я ни в чем никогда не уверен... И в этом тоже... ![]() Последний раз редактировалось Interface, 11.12.2008 в 13:02. |
#7
|
|||
|
|||
![]() Я тут про СканЛайн почитал и кажется понял суть его работы...
По видимому он дает изображение как массив пикселей... Так может быть можно так: 1. Один раз "отсканировать" изображение Pixels'om (что должно быть долго =() ; 2. Получить массив пикселей... его же хранить вместо TImage; 3. А из полученного массива строить БитМап как это в Faq'e написано(http://www.delphisources.ru/pages/fa..._to_bmp.html); 4. Его и выводить. Вопрос : Будет ли приведенный мной метод работать как скан лайн? И имеет ли это смысл? Я ни в чем никогда не уверен... И в этом тоже... ![]() Последний раз редактировалось Interface, 27.12.2008 в 11:38. |