|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.04.2008, 20:07 | #1 |
Пользователь
Регистрация: 18.04.2008
Сообщений: 17
|
помощь в графике
Мне нужна помощь в графике.
Например у меня такая елементарная задача: Я имею АРРАY[800,600] и ПаинтБох 800х600 В етом АРРАY находятса "труе" и "фалсе" я хочу состояние етого АРРАY вывести на екран (труе=голубая точка, фласе=белая точка) делаю я ето таким образом: ------------------------------------------------------------------------- type Matrix = Array [1..800,1..500] of boolean; var Feld: Matrix; .......... procedure TForm1.Button1Click(Sender: TObject); var x,y: integer; begin for y:=1 to 500 do for x:=1 to 800 do if (x mod 2) = 0 then Feld[x,y]:=true else Feld[x,y]:=false; for y:=1 to 500 do for x:=1 to 800 do if Feld[x,y] then PaintBox1.Canvas.Pixels[x,y]:=clBlue else PaintBox1.Canvas.Pixels[x,y]:=clWhite; end; ----------------------------------------------------------------------- я понимаю что такой подход не оптимальний а тупой но по другому пока не могу Так вот проблема. Прорисовиваетса етот екран не очень быстро (0.6секунды) Каким образом я могу ето дело ускорить??? Мне кажетса здес нужно воспользоваться BitBlt Верно??? |
18.04.2008, 21:09 | #2 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Сначала по вопросу:
Дотуп к пикселам через Canvas.Pixels происходит медленно, отсюда и задержка. Есть способы ускорить, но здесь это не нужно. Теперь совет: можно сделать принципиально иначе я об этом писал в соседней теме. Вместо того чтобы рисовать 480000 точек, можно рисовать 9(устройств) + 5(рук) + 1(колобок) ну и еще немного по мелочи, будет на порядок быстрее.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
18.04.2008, 21:23 | #3 | |
Пользователь
Регистрация: 18.04.2008
Сообщений: 17
|
Цитата:
но Руки, Елементы и Шарики будут заготовлены в качестве рисунков (которие я в Photo Shope нарисую) Ети рисунки буду просто показыват/прятать (visible=true...=false) Прорисовыват буду только дорожки и контакты |
|
18.04.2008, 21:25 | #4 |
Пользователь
Регистрация: 18.04.2008
Сообщений: 17
|
|
18.04.2008, 21:40 | #5 | |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Цитата:
Повторюсь еще раз, в этой игре про колобка-программиста такое не нужно, эти методы для "гурманов" к-рые РПГ на GDI делают Провода можно линиями, прямоугольниками, и даже пикселями (их не так много) рисовать, методами канвы, тормозить не будет. Единственное нужно в буфере (битмап в памяти) рисовать а то будет моргать при перерисовке, потом битмап целиком на экран методом канвы Draw(потянет нефиг делать), или BitBlt (немного быстрее).
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог Последний раз редактировалось mutabor; 18.04.2008 в 21:47. |
|
19.04.2008, 23:58 | #6 |
Пользователь
Регистрация: 18.04.2008
Сообщений: 17
|
появилась идея >>> соседняя тема
Последний раз редактировалось KingArthur; 20.04.2008 в 01:45. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задачка по математике и графике | Hollander | Помощь студентам | 2 | 14.02.2008 18:08 |
Задачки по графике | LaDy MaRMeLaD | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 12.01.2008 16:14 |
Координаты на графике | Dimon88 | Помощь студентам | 2 | 15.11.2007 17:34 |
Два вопроса новичка по графике. | grey | Помощь студентам | 7 | 04.11.2007 17:48 |