![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Пытаюсь вывести битмап таким образом:
![]() но уже совсем запутался с какого бока лучше подойти. Подскажите, какие у кого есть идеи. |
#2
|
||||
|
||||
![]() У тебя же цвета чередуются.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#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; Со второй, думаю, разберетесь =) jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 19.05.2011 в 01:49. |
#5
|
||||
|
||||
![]() Спасибо, всё получилось. С учётом того, что функция BitBlt дуракоустойчива, нет смысла что-либо добавлять ещё к приведённому примеру, меняем только строку
while a<w на while a<w+h. |