Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 11.10.2012, 02:32
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Я же тебе написал, что надо использовать TPaintBox для вывода.
1. Заводишь буферный битмап (TBitmap). В него формируется картинка, которая будет выводится на экран.
2. В PaintBox.OnPaint просто делаешь копирование изображения из буфера.
3. Все эффекты реализуются как отрисовка в цикле соотв. шага преобразования на буферном битмапе с последующим обновлением PaintBox.

Как реализовать эф. мозаики, например.
Есть:
Код:
  TMyForm = class(TForm)
     Buf : TBitmap; // buffer
     PaintBox : TPaintBox; // screen

Тогда эффект будет примерно так (очень схематично, просто для понимания):
Код:
procedure TMyForm.DoEffect(AFileName : String);
var
  Pic : TPicture;
  N, R, C, X, Y : Integer;
begin
  Pic := TPicture.Create;
  Pic.LoadFromFile(AFileName);
  For I := 1 To 100 Do // 100 parts - matrix 10x10
    Begin
      // Here is just macro code to show how to do this
      N := Random(100)+1; // Cell number in the matrix
      C := N div 10;  // Col number
      R := N mod 10; // Row number
      X := C * 50; // each cell is 50x50 pixels
      Y := R * 50; 
      Bitmap.Canvas.CopyRect(Pic.Graphic,Rect(X,Y,X+50,Y+50));
      PaintBox.Redraw;
    End;
  Pic.Free;

точно не помню как выглядит этот метод - Bitmap.Canvas.CopyRect(X,Y,Pic.Graphic,Rect(X,Y,X+ 50,Y+50));
Суть - копирует нужный кусочек изображения из одной картинки на другую.

Тебе так же потребуется сделать так, что-бы размеры картинок совпадали (или вычислять изменения размеров/координат), но это уже детали.
Ответить с цитированием
  #17  
Старый 11.10.2012, 13:41
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 660
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

На скорую руку от скуки на работе накидал слайдшоу с несколькими примитивными эффектами. link
Эффекты:
1. Никаких
2. Выезд слева
3. Выезд справа
4. Выезд сверху
5. Выезд снизу
6. Альфа
7. Горизонтальные жалюзи
8. Вертикальные жалюзи
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.

Последний раз редактировалось dr. F.I.N., 11.10.2012 в 17:04.
Ответить с цитированием
Этот пользователь сказал Спасибо dr. F.I.N. за это полезное сообщение:
cybervampire (11.10.2012)
  #18  
Старый 11.10.2012, 16:47
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Ну, как обещал, сделал. Только твой проект немног переделать пришлось.
Чет с мозаикой только не разобрался, сделал аналог (в худшую сторону).
С тем же успехом можешь использовать пример dr. F.I.N., у него менее требовательно к процессору (в случае небольших размеров изображения).
Вложения
Тип файла: rar trylaba.rar (211.9 Кбайт, 18 просмотров)
Ответить с цитированием
Этот пользователь сказал Спасибо YVitaliy за это полезное сообщение:
cybervampire (11.10.2012)
  #19  
Старый 11.10.2012, 17:03
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 660
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Исправил ссылку.
Добавлены эффекты:
9. Появление снаружи
10. Появление изнутри
11. Мозайка
12. Горизонтальное перемешивание
13. Вертикальное перемешивание

Цитата:
Сообщение от YVitaliy
...менее требовательно к процессору (в случае небольших размеров изображения).
Посмотри размер изображений в комплекте с программой. Они далеко не маленькие. Просто при запуске программы:
1. Ищем все Жипеги
2. Грузим в память
3. Конвертим их в БМП
4. Уменьшаем до размера отображения
Если увеличить размеры формы (вчастности пейнтбокса), то на производительности это не отразится (на столько чтоб стало заметно глазу). Только в случае Альфа-эффекта. Там пробег по всем точкам идет, хоть и через сканлайн. В остальном - ничего нагружающего проц нету. Так что работает шустро :-P
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.

Последний раз редактировалось dr. F.I.N., 11.10.2012 в 18:34.
Ответить с цитированием
Этот пользователь сказал Спасибо dr. F.I.N. за это полезное сообщение:
cybervampire (11.10.2012)
  #20  
Старый 11.10.2012, 19:19
cybervampire cybervampire вне форума
Прохожий
 
Регистрация: 22.03.2012
Сообщения: 12
Репутация: 10
По умолчанию

Огромное спасибо всем кто откликнулся. буду смотреть, делать по своему, если что будет непонятно напишу еще)))
Ответить с цитированием
  #21  
Старый 11.10.2012, 19:48
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Цитата:
Сообщение от dr. F.I.N.
Ищем все Жипеги
Ну, у меня еще и битмапы и гифки ищет). Насчет конвертирования - да, я об этом не подумал Все рассчитано под ресайзэд форму. Работает тоже шустро, но проца (тоесть одно ядро) гонит на 80-100 процентов . Но только во время действия эффекта Если бы мне нужно было что-то подобное делать - сделал бы в OpenGL, там было бы еще быстрее чем у тебя ( ), а эффектов то...
Ответить с цитированием
  #22  
Старый 11.10.2012, 21:09
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Так пойдёт?
effect
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #23  
Старый 11.10.2012, 21:29
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Цитата:
Сообщение от angvelem
Так пойдёт?
Идет, но проца жрет так же как и у меня А мои картинки то не
помещаются в форму, центр в нижнем правом углу - еле видно.

>offtop
Интересные кнопки. Сейчас создам тему наверное, чтоб подсказали, где найти изображения (текстуры) для элементов интерфейса. Хочу сделать GUI в OpenGL, но воображения самому нарисовать не хватает/руки кривые.
Ответить с цитированием
  #24  
Старый 11.10.2012, 22:31
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

А чему там "жрать" - BitBlt в основном.
Это обычный ToolBar с градиентной заливкой.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 11.10.2012 в 22:34.
Ответить с цитированием
  #25  
Старый 11.10.2012, 22:48
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от dr. F.I.N.
Исправил ссылку.
...

F.I.N., можешь сырцы сюда выложить, думал прикрутить к своей проге такие же фичи, но все руки не доходили...

ЗЫ. zalil у меня с работы закрыт
Ответить с цитированием
  #26  
Старый 15.10.2012, 18:16
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 660
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Цитата:
Сообщение от lmikle
F.I.N., можешь сырцы сюда выложить, думал прикрутить к своей проге такие же фичи, но все руки не доходили...

ЗЫ. zalil у меня с работы закрыт
кинь в личку почту - отправлю. Сори за долгий ответ - с командировки только вернулся.
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием
  #27  
Старый 15.10.2012, 18:55
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Все, спасибо. Я из дома скачал. Буду посмотреть...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:06.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter