Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2009, 09:02   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Задание имени объекта процедурке

Всем известный код для перехода одного изображения в другое:
Код:
Procedure PicToPic(PicName1,PicName2,Times,Sleeper: String);
 Var
  bm, bm1, bm2: TBitMap;
  p1, p2, p: PByteArray;
  i, y, x: integer;
 Begin
  Sleep(StrToInt(Sleeper));
  bm := TBitMap.Create;
  bm1 := TBitMap.Create;
  bm2 := TBitMap.Create;
  bm1.LoadFromResourceName(HInstance,PicName1);
  bm2.LoadFromResourceName(HInstance,PicName2);
  bm.PixelFormat := pf24bit;
  bm1.PixelFormat := pf24bit;
  bm2.PixelFormat := pf24bit;
  bm.Height :=bm1.Height;
  bm.Width :=bm1.Width;
  Form1.Image1.Canvas.Draw(0, 0, bm1);
  For i := 1 To StrToInt(Times) - 1 Do
  Begin
   For y := 0 To bm.Height - 1 Do
    Begin
      p := bm.ScanLine[y];
      p1 := bm1.ScanLine[y];
      p2 := bm2.ScanLine[y];
      For x := 0 To bm.Width * 3 - 1 Do
        p^[x] := round((p1^[x] * (StrToInt(times) - i) + p2^[x] * i) / StrToInt(times));
    End;
    Form1.Image1.Canvas.Draw(0, 0, bm);
    Application.ProcessMessages;
    Sleep(5)
  End;
  bm1.Destroy;
  bm2.Destroy;
  bm.Destroy;
 End;
Хотелось бы добавить в переменные процедуры объект, что бы обращаясь к ней задавать не только картинки и кол-во изменений, но и объект, на котором это будет рисоваться. Может написать

Procedure PicToPic(PicName1,PicName2,Times,Sl eeper: String; Var IMG:TImage);? А Form1.Image1 заменить на IMG. Но как тогда правильно прописывать обращение к процедуре?
Procedure PicToPic('Ima1',Ima2','50', Form1.Image2);?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 24.05.2009, 09:07   #2
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Объяви без var :
Код:
Procedure PicToPic(PicName1,PicName2,Times,Sleeper: String; IMG:TImage);
И не забывай в самой процедуре Form1.Image1 поменять на IMG.
И вызов делай так как сам написал : PicToPic('Ima1','Ima2','50', Image2);
"Заряженному танку в дуло не смотрят" @Dekmer in WoT

Последний раз редактировалось Kotofff; 24.05.2009 в 09:10.
Kotofff вне форума Ответить с цитированием
Старый 24.05.2009, 09:31   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Большое спасибо, Kotofff.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 24.05.2009, 09:45   #4
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Еще можно для "хорошего тона" в процедуре поменять тип аргументов Times и Sleeper на integer ... и соответственно в самой процедуре поменять Sleep(StrToInt(Sleeper)) на просто Sleep(Sleeper) и так же с StrToInt(Times) ...
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 24.05.2009, 12:05   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Да эт я у себя уже заменил, просто руки не дотягивались.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С помощью методов и свойств объекта осуществляется управление терминалом. Имя (идентификатор) объекта User>lia Общие вопросы Delphi 4 16.01.2009 16:37
Как поменять одну из текстур объекта не меняя все остальные и без повторной загрузки объекта в GLScene DomKr@t Мультимедиа в Delphi 0 14.12.2008 01:52
Сортировать по имени Манжосов Денис :) Помощь студентам 2 25.04.2008 10:12
Смена имени Terran Win Api 2 14.12.2007 17:19
Класс по имени Sibedir Общие вопросы Delphi 2 04.12.2007 08:24