ISPicture2

DLL ISPicture2 13-02-2014

Нет прав для скачивания

LexBell

Борода
Супер модератор
Shift85, пример идет с библиотекой. полноценный и самодостаточный. все что нужно - тупо в формдизайнере задать нужные размеры и расположение элементов.
 

wererat01

Мимокрокодил
Код:
;#define Video
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
OutputBaseFilename=2

[Files]
Source: IsPicture_for_all.dll; Flags: dontcopy
Source: Fon.bmp; Flags: dontcopy
#ifdef Video
Source: XVID\fon.avi; Flags: dontcopy
#endif

#ifdef XvidModul
; XVID Codec
Source: "xvidcore.dll"; DestDir: "{tmp}"; Flags: dontcopy
Source: "xvidvfw.dll"; DestDir: "{tmp}"; Flags: dontcopy
#endif



[Code]
//-----------------------------------------
procedure Initialize(AhWnd,BhWnd:hWnd);external 'Initialize@{tmp}\IsPicture_for_all.dll stdcall delayload';
//  Здесь указываем хендлы окон, на данный момент, лучше пока указывать
//  WizardForm.Handle - первым и MainForm.Handle вторым.
//-----------------------------------------
procedure XvidVideo(fn:String;Seth:string);external 'XvidVideo@{tmp}\IsPicture_for_all.dll stdcall delayload';
//  Эта процедура загружает фоновое avi-видео.
//  Seth  - задаем координаты через пробел в одинарных кавычках
// пример:   XvidVideo(ExpandConstant('{tmp}\fon.avi'), '351 201 236 132');
//-----------------------------------------
procedure Deinitialize;external 'Deinitialize@{tmp}\IsPicture_for_all.dll stdcall delayload';
//    отменяет свзывание форм между собой, выгружает видео.

//-----------------------------------------
function NewFont(Height:Integer;thickness,italic,underline,strikeout:DWORD;name:String):hWnd;external 'NewFont@{tmp}\IsPicture_for_all.dll stdcall delayload';
//  Создает шрифты для замены стандартных. Необходима для борьбя с артефактами сглаживания.
//   Height,                    // высота шрифта
//   thickness,                      // насыщенность шрифта
//   italic,                          // курсив
//   underline,                        // Подчеркнутый
//   strikeout,                        // Зачеркнутый
//   name                       // имя шрифта
//-----------------------------------------
procedure SplashWnd(FileName:PAnsiChar;Time,width,height:Integer);external 'SplashWnd@{tmp}\IsPicture_for_all.dll stdcall delayload';
//  Создает Splash-заставку
//   Прозрачность, пока, не поддерживается
//   FileName,                    // имя файла
//   Time,                            // скорость появления в миллисекундах
//   width,                              // ширина
//   height,                            // высота
procedure EndSplash(Time1,Time2:Integer);external 'EndSplash@{tmp}\IsPicture_for_all.dll stdcall delayload';
//  Закрываем Splash-заставку
//   Time1,                            // выжидание до закрытия в миллисекундах
//   Time,                            // скорость закрытия в миллисекундах
//-----------------------------------------
//-----------------------------------------

function GetSystemMetrics(nIndex:Integer):integer; external 'GetSystemMetrics@user32.dll stdcall delayload';

const
   TfonColor = $000008; // Цвет фона $000008 - не изменять!
   TfontColor = $ffffff; // Цвет тeкста

#ifdef Video

#include "XVID\xvid.iss"
#endif
#include "WizardFormResise.iss"
Var Font1,Font2:hWnd;

function InitializeSetup(): Boolean;
begin
  ExtractTemporaryFile('IsPicture_for_all.dll');
  ExtractTemporaryFile('fon.bmp');
//  ExtractTemporaryFile('xvidcore.dll');
//  ExtractTemporaryFile('xvidvfw.dll');
  SplashWnd(ExpandConstant('{tmp}\fon.bmp'),1500,ScaleX(600),ScaleY(420));

#ifdef Video
    XvidInstall;
  ExtractTemporaryFile('fon.avi');
#endif
  EndSplash(1500,1000);
  Result:=True;


end;

procedure InitializeWizard();
begin


#ifdef XvidModul
XvidInstall;          // ????????? ??????????? Xvid
#endif

Font1:= NewFont(16,600,0,0,0,'Comic Sans MS');
Font2:= NewFont(24,900,0,0,0,'Tahoma');

#ifdef Video
if CanUseXvid then begin
    WizardForm.AutoScroll := False;
    WizardForm.ClientWidth:= ScaleX(600);
    WizardForm.ClientHeight:=ScaleY(420);
    WizardForm.Center;
    end
    WizardFormResise;
#endif

    WizardForm.WizardSmallBitmapImage.Hide;
    WizardForm.WizardBitmapImage2.Hide;
    WizardForm.DirEdit.AutoSelect:=False;
//-----------------------------------------

//-----------------------------------------
//---------------// не изменять!\\---------------\\
//   задаем цвет всем элементам,которые нам нужны.
    WizardForm.WelcomePage.Color:=TfonColor;// не изменять!
    WizardForm.FinishedPage.Color:=TfonColor;
    WizardForm.InnerPage.Color:=TfonColor;
    WizardForm.DirEdit.Color:=TfonColor;
    WizardForm.ReadyMemo.Color:=TfonColor;
    WizardForm.MainPanel.Color:=TfonColor;
//---------------// не изменять!\\---------------\\
//-----------------------------------------

//-----------------------------------------
//---------------//Применяем шрифт\\---------------\\
    WizardForm.Font.Handle:=Font1;
    WizardForm.WelcomeLabel1.Font.Handle := Font2;
    WizardForm.FinishedHeadingLabel.Font.Handle := Font2;
    WizardForm.PageNameLabel.Font.Handle := Font1;
    WizardForm.Font.Color:=TfontColor;
//---------------//Применяем шрифт\\---------------\\
//-----------------------------------------

//-----------------------------------------
//   Приделываем прозрачность к SelectDirBitmapImage
//   иначе, придется любоваться на красивый серый
//   квадратик вокруг изображения папки :)
    WizardForm.SelectDirBitmapImage.BackColor := clNone;
    WizardForm.SelectDirBitmapImage.ReplaceColor := clBtnFace;
//-----------------------------------------

//   скрываем изображение с финишной страницы
    WizardForm.WizardBitmapImage.Parent := MainForm;
    WizardForm.WizardBitmapImage.SetBounds(0, 0, WizardForm.ClientWidth, WizardForm.ClientHeight);
//-----------------------------------------
//-----------------------------------------
//   Запускаем в работу все, что приготовили:
//   указываем формы, с которыми будет работать длл-ка,
//-----------------------------------------
    Initialize(WizardForm.Handle,MainForm.Handle);
//-----------------------------------------
//  мультимедийные возможности - Фоновое видео
//-----------------------------------------
#ifdef Video
if CanUseXvid then
  XvidVideo(ExpandConstant('{tmp}\fon.avi'), '351 201 236 132');
#endif
//-----------------------------------------
end;

procedure DeinitializeSetup();
begin
//-----------------------------------------
//   Не забываем про Deinitialize
//   если не хотим разнообразных ошибок при выходе.
//-----------------------------------------
  Deinitialize;
//-----------------------------------------
#ifdef Video
  XvidUnInstall;
#endif
end;
есть ли пример работы с фоновым видео ? код из примера просто не работает фоновое видео, даже с кодом из readme.txt
 

Nemko

Дилетант
Модератор
wererat01 написал(а):
есть ли пример работы с фоновым видео ? код из примера просто не работает фоновое видео, даже с кодом из readme.txt
ИМХО: Используйте кодек для видео WMV\WMV2, для аудио WMA\WMA2. Да и звуковая дорожка должна быть...
 

Вложения

Последнее редактирование:

LexBell

Борода
Супер модератор
Обновлена библиотека, возможность добавления нескольких видео на задний фон, остальное все так-же - вывод с помощью DirectX, катинка BMP на задний фон.
Управление видео раздельное, расширенный пример можно подглядеть в IsDxVideo.
О кодеках, для воспроизведения экзотических форматов, рекомендую озаботиться самостоятельно
 

sergey3695

Ветеран
Модератор
LexBell, если у меня xvid video не пашет. т.е. без ошибок ничего не происходит, хотя IsDxVideo работает. то что-то ни так.
Код:
#ifdef UNICODE
  #define A "W"
#else
  #define A "A"
#endif
#ifndef IS_ENHANCED
  #error Enhanced edition of Inno Setup (restools) is required to compile this script
#endif

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Files]
Source: IsPicture2.dll; Flags : dontcopy;
Source: fon.avi; Flags: dontcopy
Source: fon.bmp; Flags: dontcopy

[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl

[code]
//----------------------------------------------------------------------------------\\
const   // жирность шрифта
  FW_DONTCARE   = 0;
  FW_THIN       = 100;
  FW_ULTRALIGHT = 200;
  FW_LIGHT      = 300;
  FW_NORMAL     = 400;
  FW_MEDIUM     = 500;
  FW_DEMIBOLD   = 600;
  FW_BOLD       = 700;
  FW_ULTRABOLD  = 800;
  FW_BLACK      = 900;

procedure IsPicInit(Handle : HWND);
   external 'IsPicInit@files:IsPicture2.dll stdcall delayload';
  // начало работы
 
procedure IsPicAddImg(fName : AnsiString);
   external 'IsPicAddImg@files:IsPicture2.dll stdcall delayload';
  // изображение на заднем фоне

procedure IsPicAddVideo(fName : AnsiString; l, t, w, h : Integer; test : Boolean);
   external 'IsPicAddVideo@files:IsPicture2.dll stdcall delayload';
  // видео на заднем фоне
  // fName - имя файла
  // l, t, w, h - положение и размер видео
  // test показ сообщений об ошибках: True - с сообщениями, false - без сообщений
function IsPicReFont(OldFont: HWND; height, Weight : Integer; Italic : Boolean) : HWND;
   external 'IsPicReFont@files:IsPicture2.dll stdcall delayload';
  // подмена шрифта для борьбы с артефактами сглаживания
  // height - Font.Height
  // Weight - жирность
  // Italic - наклонность

procedure IsPicStopVideo;
   external 'IsPicStopVideo@files:IsPicture2.dll stdcall delayload';
  // остановка воспроизведения видео - после этой команды
  // видео будет полностью выгружено

function IsPicChecVideo : Boolean;
   external 'IsPicChecVideo@files:IsPicture2.dll stdcall delayload';
  // проверка успешности загрузки видео

function IsPicChecSound : Boolean;
   external 'IsPicChecSound@files:IsPicture2.dll stdcall delayload';
  // проверка успешности загрузки звука

procedure IsPicPauseVideo(play : Boolean);
   external 'IsPicPauseVideo@files:IsPicture2.dll stdcall delayload';
  // пауза видео
  // play -
  // если значение True, то продолжаем воспроизводить
  // если значение False, то ставим на паузу

procedure IsPicSetVolume(volume : Integer);
   external 'IsPicSetVolume@files:IsPicture2.dll stdcall delayload';
  // громкость видео от -10000 до 0.
  // -10000 - минимальное значение
  // 0 - максимальное значение

procedure IsPicDeInit;
   external 'IsPicDeInit@files:IsPicture2.dll stdcall delayload';
  // не забываем вызвать в DeinitializeSetup
//----------------------------------------------------------------------------------\\

procedure RunStop(Sender: TObject);
begin
  IsPicPauseVideo(TNewCheckBox(Sender).Checked);
end;

procedure SetVolume(Sender: TObject);
begin
  IsPicSetVolume(TTrackBar(Sender).Position);
end;

/////////////////////////////////////////////////////////////////////////

procedure InitializeWizard();
begin
  wizardform.WizardSmallBitmapImage.hide;
  wizardform.PageNameLabel.hide;
  ExtractTemporaryFile('fon.bmp');
  ExtractTemporaryFile('fon.avi');
  wizardform.Bevel.Hide;
  wizardform.Bevel1.Hide;
  with WizardForm do
  begin
    WizardBitmapImage.Free;
    WizardBitmapImage2.Free;
//----------------------------------------------------------------------------------\\
  // подменяем шрифты
    Font.Handle := IsPicReFont(Font.Handle, Font.Height, FW_DEMIBOLD, False);
    WelcomeLabel1.Font.Handle := IsPicReFont(WelcomeLabel1.Font.Handle, WelcomeLabel1.Font.Height, 100, False);
    PageNameLabel.Font.Handle := IsPicReFont(PageNameLabel.Font.Handle, PageNameLabel.Font.Height, 100, False);
    FinishedHeadingLabel.Font.Handle := IsPicReFont(FinishedHeadingLabel.Font.Handle, FinishedHeadingLabel.Font.Height, 100, False);
//----------------------------------------------------------------------------------\\
    with ComponentsList do
    begin
      //BorderStyle := bsNone;
      TreeViewStyle := True;
      Width := ScaleX(500);
      Left := ScaleX(50);
      Top := ScaleY(150);
      Height := ScaleY(185);
      Font.Name:='Trebuchet MS';
      Font.Size:= 10;
      Font.Color:=$FFFFFF;
      Color := $000008;
    end;

    ComponentsList.Font.Handle := IsPicReFont(ComponentsList.Font.Handle, ComponentsList.Font.Height, 0, False);
  //----------------------------------------------------------------------------------\\
  // цвет прозрачности - $000008. Указываем его для элементов,которые должны быть прозрачными
    Color := $000008;
    WelcomePage.Color := $000008;
    InnerPage.Color := $000008;
    FinishedPage.Color := $000008;
    MainPanel.Color := $000008;
    DirEdit.Color := $000008;
    ReadyMemo.Color := $000008;
//----------------------------------------------------------------------------------\\
    Font.Color := clYellow;
    // запускам
  end;
    IsPicInit(WizardForm.Handle);
//----------------------------------------------------------------------------------\\
  // добавляем изображение на задний фон
  IsPicAddImg(ExpandConstant('{tmp}\fon.bmp'));
  // добавляем видео на задний фон
  IsPicAddVideo(ExpandConstant('{tmp}\fon.avi'), 0, 0, 360, 200, False); // При окончательной компиляции меняем True на False
//----------------------------------------------------------------------------------\\

//----------------------------------------------------------------------------------\\
//  проверяем успешность загрузки видео
  if IsPicChecVideo then
  begin
    // чекбокс - Пуск - Пауза
    with TNewCheckBox.Create(WizardForm) do
    begin
      Parent := WizardForm;
      SetBounds(ScaleX(24), ScaleY(330), ScaleX(90), ScaleY(14));
      Caption := 'Пуск - Пауза';
      Checked := true;
      OnClick := @RunStop;
    end;
    // трекбар - Громкость
  if IsPicChecSound then
    with TTrackBar.Create(WizardForm) do
    begin
      Parent := WizardForm;
      SetBounds(ScaleX(138), ScaleY(326), ScaleX(100), ScaleY(23));
      Min := -5000;
      Max := 0;
      Position := -3000;
      TickMarks := tmBoth;
      TickStyle := tsNone;
      OnChange := @SetVolume;
    end;
    IsPicSetVolume(-3000);
  end else
  MsgBox('False!', mbInformation, MB_OK);
//----------------------------------------------------------------------------------\\
end;

procedure DeinitializeSetup();
begin
  IsPicDeInit;
end;
p.s. старая версия тоже не работает. =) там нет звуковой дорожки.
 
Последнее редактирование:

LexBell

Борода
Супер модератор
sergey3695, в IsPicAddVideo последний параметр в true и последние 2 меседжа кинь мне.
Я там в тест режиме добавил еще и шаги по успешным операциям.
А, и саму видюшку добавь )
 

sergey3695

Ветеран
Модератор
LexBell, я же написал. там нет звуковой дорожки. -> ошибка рендера звука. что и в предыдущих сообщениях написано. в архиве только видео.
 

Вложения

  • 1.7 MB Просмотры: 21

LexBell

Борода
Супер модератор
sergey3695, пробуй, нашел ошибку. кстати, звуковая дорожка есть, она просто нулевого размера )

Перезалил. Обратить внимание, скрипт немного изменился.
 

Вложения

Последнее редактирование модератором:

sergey3695

Ветеран
Модератор
LexBell, с моей стороны проблема. xvid decoder перехватывал управление. все норм. забыл про него.
 
Сверху