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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2008, 23:24   #1
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
Плохо Появлениe image

Добрый вечер!
Подскажите пожалуйста: каким образом можно красиво вывести картинку на экран (то есть например с мерцанием или например круговая анимация, или по линиям). Заранее спасибо!
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума Ответить с цитированием
Старый 29.09.2008, 23:35   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Вы можете поставить на форму компонент Image с картинкой, а потом использовать AnimateWindow для красивого появления или исчезания формы или ещё чего-нибудь. Здесь вся информация: AnimateWindow.rar
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 29.09.2008, 23:49   #3
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
По умолчанию

hwnd - Дескриптор окна, которое анимируется. Вызывающий поток должен владеть этим окном.
а мне нужно -картинку (image1), как это сделать?
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума Ответить с цитированием
Старый 29.09.2008, 23:57   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Ну вы же картинку-то не на канве экрана выводить будете?
Кладете картинку на форму, форме задаете свойство безбордерности, вот и все дела - работаете с обычной формой. А на ней нет ничего, кроме картинки...
mihali4 вне форума Ответить с цитированием
Старый 30.09.2008, 12:03   #5
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
По умолчанию

А нельзя придумать что-то другое?
Чтобы именно картинки появлялись с мерцанием, с круговой анимацией - а форму не трогали?
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума Ответить с цитированием
Старый 30.09.2008, 14:28   #6
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Вот плавно выводим заставку до появления формы на глаза, по сути копируем изображение с части канвы экрана и шаг за шагом изменяем. Я уже приводил пару месяцев назад похожий пример - где-то в поиске
Код:
procedure TForm1.FormCreate(Sender: TObject);
const
  kadr = 100;//за сколько проходов отрисуем
var
  bm, bm1, bm2: TBitMap;
  p1, p2, p: PByteArray;
  x, y, i: integer;
  dtc:tcanvas;
  var Iz, Desc :TRect;
begin
  bm := TBitMap.Create;
  bm1 := TBitMap.Create;
  bm2 := TBitMap.Create;
  bm.PixelFormat := pf24bit;
  bm1.PixelFormat := pf24bit;
  bm2.PixelFormat := pf24bit;
  //загружаем конечное изображение
  bm2.LoadFromFile('start.bmp');
  bm.Height := bm2.Height;  bm.Width := bm2.Width;
  bm1.Height := bm2.Height; bm1.Width := bm2.Width;
  //получаем доступ к рабочему столу
  dtc:=tcanvas.create;
  dtc.handle:=getdc(hwnd_desktop);
  //выделяем часть рабочего стола (середину)
  Desc.Left:=(Screen.Width-bm.Width) div 2;
  Desc.Top:=(Screen.Height-bm.Height) div 2;
  Desc.Right:=(Screen.Width+bm.Width) div 2;
  Desc.Bottom:=(Screen.Height+bm.Height) div 2;
  //это не менять
  Iz.Left:=0;
  Iz.Top:=0;
  Iz.Right:=bm1.Height;
  Iz.Bottom:=bm1.Height;
  //копируем рабочий стол
  bm1.Canvas.CopyRect(Iz,dtc,Desc);
  //рисуем заставку
  for i := 1 to kadr - 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] * (kadr - i) + p2^[x] * i) / kadr);
    end;
    //отрисовка на рабочем столе
    dtc.Draw((Screen.Width-bm.Width) div 2,
             (Screen.Height-bm.Height) div 2,
             bm);
    //можно дать время на отбражение и чуть подождать
    Application.ProcessMessages;
    sleep(50);
  end;
  //освободим память
  dtc.Free;
  bm.Free;
  bm1.Free;
  bm2.Free
end;
eoln вне форума Ответить с цитированием
Старый 30.09.2008, 19:58   #7
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
По умолчанию

а можно также jpg?
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума Ответить с цитированием
Старый 30.09.2008, 20:15   #8
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Вот если бы поиском прошлись, увидели бы что можно
заменяем
Код:
//загружаем конечное изображение
  bm2.LoadFromFile('start.bmp');
  bm.Height := bm2.Height;  bm.Width := bm2.Width;
  bm1.Height := bm2.Height; bm1.Width := bm2.Width;
  //получаем доступ к рабочему столу
на
Код:
//загружаем конечное изображение
  jp := TJPEGImage.Create;
  jp.LoadFromFile('start.jpg');
  bm2.Assign(jp);
  bm.Height := bm2.Height;  bm.Width := bm2.Width;
  bm1.Height := bm2.Height; bm1.Width := bm2.Width;
  //получаем доступ к рабочему столу
где естественно
uses JPEG;
var jp: TJPEGImage;
eoln вне форума Ответить с цитированием
Старый 30.09.2008, 20:21   #9
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
По умолчанию

cпасибо большое!
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
image Черничный Общие вопросы Delphi 2 25.06.2008 16:09
Image B Delphi Gromsky Помощь студентам 1 29.02.2008 15:40
PNG в Image Grey Fox Помощь студентам 1 02.08.2007 12:24
прозрачный Image Roof Помощь студентам 8 27.07.2007 12:15
image Elm0 Свободное общение 4 21.06.2007 17:34