![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Пытаюсь вывести битмап таким образом:
![]() но уже совсем запутался с какого бока лучше подойти. Подскажите, какие у кого есть идеи. |
|
#2
|
||||
|
||||
|
У тебя же цвета чередуются.
|
|
#3
|
||||
|
||||
|
Цвета только показывают последовательность вывода. Грубо говоря, "рубим" картинку на квадратики, скажем 32х32, и выводим диагональными линиями.
|
|
#4
|
||||
|
||||
|
Обход какой:
диагональ 1: i = 0; j = 0; диагональ 2: i = 1; j = 0;| i = 0; j = 1; диагональ 3: i = 2; j = 0;| i = 1; j = 1;| i = 0; j = 2; диагональ 4: i = 3; j = 0;| i = 2; j = 1;| i = 1; j = 2;| i = 0; j = 3; Т.е. уменьшается номер картинки "по длине" и одновременно увеличивается "по высоте". Вот и проходим таким образом, вырезаем нужные кусочки изображения и рисуем. Так до конца ширины. Потом идем по высоте, I ставится равным ширине и уменьшается, J увеличивается. Первая часть так: Код:
a:=0; while a<w do begin j:=0; for i:=a downto 0 do begin // выводим кусок картинки inc(j); end; inc(a); end; Со второй, думаю, разберетесь =) Последний раз редактировалось Bargest, 19.05.2011 в 01:49. |
|
#5
|
||||
|
||||
|
Спасибо, всё получилось. С учётом того, что функция BitBlt дуракоустойчива, нет смысла что-либо добавлять ещё к приведённому примеру, меняем только строку
while a<w на while a<w+h. |