Страница 1 из 2

Показ слайд-шоу

Добавлено: 24 Март 2017, 11:44
kreator
Заказчик сошёл с ума :mrgreen: . Просит во время бездействия программы показывать слайд-шоу из фото и видеоматериалов. Вопрос - винапишная функция mcisendstring может показывать скажем jpeg? С показом видео у меня вроде опыт есть. Хотелось бы одной функцией пользоваться. Или может есть вообще какой-нибудь красивый вариант - послать функции каталог с этими материалами, пусть сама всё делает?

Показ слайд-шоу

Добавлено: 24 Март 2017, 11:46
Ал
kreator писал(а):Заказчик сошёл с ума :mrgreen: . Просит во время бездействия программы показывать слайд-шоу из фото и видеоматериалов. Вопрос - винапишная функция mcisendstring может показывать скажем jpeg? С показом видео у меня вроде опыт есть. Хотелось бы одной функцией пользоваться. Или может есть вообще какой-нибудь красивый вариант - послать функции каталог с этими материалами, пусть сама всё делает?
хм... см папку c щтатными примерами...

Показ слайд-шоу

Добавлено: 24 Март 2017, 12:37
Yufil
А в чём проблема? Сделай на окне поле ?Image и спрячь
Есть список файлов, ходишь по нему. Если файл - видео, то спрятать ?image и показывать видео
Если файл картинка - закрыть видео, присвоить картинке ?Image{Prop:Text} = имяфайла, показать картинку

Здесь есть тонкость - как соблюсти пропорции картинки.
Для этого на экране размещается (скрытый) контрол, в который эта картинка должна быть вписана,
а после присвоения масштабировать картинку, чтобы прилично смотрелось

Вот есть такая процедура

Код: Выделить всё

ImageInControl       PROCEDURE  (Long ImageControl,Long BaseControl,Long Border) ! Declare Procedure
!---------------------------------------------
!  Разместить ImageControl внутри BaseControl,
!  используя бордюр указанного размера 
!  Предполагается, что для ImageControl уже задан Prop:Text 
!---------------------------------------------
Loc:ImageWidth  LONG 
Loc:ImageHeight LONG 
Loc:BaseX       LONG 
Loc:BaseY       LONG 
Loc:BaseW       LONG 
Loc:BaseH       LONG 
Loc:WCoeff      REAL 
Loc:HCoeff      REAL 

Loc:NewPos      LONG,DIM(4) 

  CODE
  0{Prop:Pixels} = True 
  Hide(ImageControl)
  ImageControl{PROP:NoHeight} = True 
  ImageControl{PROP:NoWidth}  = True 
  Loc:ImageWidth = ImageControl{Prop:Width} 
  Loc:ImageHeight = ImageControl{Prop:Height} 
  If Loc:ImageHeight=0 
    0{Prop:Pixels} = FALSE   
    Return 
  END   
  GETPOSITION(BaseControl, Loc:BaseX, Loc:BaseY, Loc:BaseW, Loc:BaseH) 
  IF BaseControl = 0 
    Loc:BaseX = 0 
    Loc:BaseY = 0 
    Border = 0 
  ELSIF Loc:BaseW > Border * 4 
    Loc:BaseX += Border 
    Loc:BaseY -= Border 
    Loc:BaseW -= (Border*2)
    Loc:BaseH -= (Border*2) 
  END 
  Loc:WCoeff = Loc:BaseW / Loc:ImageWidth 
  Loc:HCoeff = Loc:BaseH / Loc:ImageHeight 
  IF Loc:Wcoeff > Loc:HCoeff 
     Loc:Wcoeff = Loc:HCoeff 
  ELSIF LOC:WCoeff < Loc:HCoeff 
     Loc:HCoeff = Loc:WCoeff 
  END 
  ! Width 
  Loc:NewPos[3] = Loc:ImageWidth * Loc:WCoeff 
  ! Height 
  Loc:NewPos[4] = Loc:ImageHeight * Loc:HCoeff 
  ! Xpos 
  Loc:NewPos[1] = Loc:BaseX + (Loc:BaseW - Loc:Newpos[3])/2 
  ! Ypos 
  Loc:NewPos[2] = Loc:BaseY + (Loc:BaseH - Loc:NewPos[4])/2   

  SetPosition(ImageControl, Loc:NewPos[1], Loc:NewPos[2], |
      Loc:NewPos[3], Loc:NewPos[4]) 
  Unhide(ImageControl) 
  0{Prop:Pixels} = FALSE     
К сожалению, у нас в презентации могут быть документы Word, Excel, PDF, Web-страницы. Тогда приходится открывать что-то подходящее, но это совсем другая история

Показ слайд-шоу

Добавлено: 24 Март 2017, 13:12
kreator
Yufil писал(а): А в чём проблема? Сделай на окне поле ?Image и спрячь Есть список файлов, ходишь по нему. Если файл - видео, то спрятать ?image и показывать видео Если файл картинка - закрыть видео, присвоить картинке ?Image{Prop:Text} = имяфайла, показать картинку
Да, это не проблема, если другого варианта не найду.
Yufil писал(а): Здесь есть тонкость - как соблюсти пропорции картинки.
Тоже не проблема. Ещё нужно соблюсти пропорции видео. Не подскажете, как вытянуть размер видео из mcisendstring?
Ещё нужно отслеживать окончание видеофайла, потому что нужно ставить проигрыш на паузу. Тоже не проблема по идее.
В общем движений много. Ради баловства.

Показ слайд-шоу

Добавлено: 24 Март 2017, 13:42
Ал
kreator писал(а): Заказчик ... Просит во время бездействия программы показывать слайд-шоу из фото и видеоматериалов.
Ради баловства :?:

Показ слайд-шоу

Добавлено: 24 Март 2017, 13:47
Yufil
Мы просто составляем файл, где указываем, в каком порядке и сколько секунд играть видео или показывать картинку, все равно же делать. Прошло время - поехали дальше. Насчёт видео - просто договорились о стандартной пропорции и от неё не отступаем. Если элементом является картинка или текст, то при подготовке слайд-шоу указываем ещё цвет фона и размеры (просто перемещая и растягивая окно)

В результате получается что-то вроде....

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8" ?>
<Plan>
<Param Header="" AllowComment="2" Time="6002" System="Делопроизводство для секретаря" CommentPos="RU" />
<Topic  Name="Требования к оформлению документов"  Time="3001"  Type="SCR"  Color="0"  BackColor="0"  Id="A2_11" />
<Topic  Name="Экран"  Time="3001"  Type="PIC"  Color="0"  BackColor="0"  File="_snap.bmp" play="music.mp3" />
<Topic  Name="Размножение лишайников"  Time="3001"  Type="TXZ"  X="143" Y="134" W="392" H="186"  File="84050.txz"  Full="1" />
</Plan>
Давно это делал...

Показ слайд-шоу

Добавлено: 25 Апрель 2017, 13:16
kreator
Дело пошло. Не подскажет кто - как mciSendString'у подсунуть другой файл (с видео, сейчас это меня интересует). Сейчас полностью останавливаю одно видео, потом открываю другое. При этом - не слишком приятная пауза.

Показ слайд-шоу

Добавлено: 25 Апрель 2017, 14:43
Yufil
Может быть, просто создать одну презентацию из картинок-фильмов. И показывать...

Показ слайд-шоу

Добавлено: 26 Апрель 2017, 17:03
kreator
Yufil писал(а): 25 Апрель 2017, 14:43 Может быть, просто создать одну презентацию из картинок-фильмов. И показывать...
Это уж пусть заказчик делает.
Есть у mciSendString команда load (судя по описанию - то, что надо). Но что-то не идёт. На вот это:

Код: Выделить всё

LOC:mciCommand = 'load video "' & clip(LOC:FileName) & '" notify'
err# = mciSendString(LOC:mciCommand, LOC:mciReturn, 128, 0)
выдаёт 274 ошибку. Без "notify" то же самое. Даже не знаю, разбираться с этой ошибкой или нет

Показ слайд-шоу

Добавлено: 26 Апрель 2017, 18:37
Yufil
А зачем? Можно закрыть одно видео и открыть другое. Или открыть новое видео под другим именем (например, 'video2'), а потом через несколько секунд закрыть первое. Только опыт показывает, что при закрытии окна все видео надо закрыть.

Показ слайд-шоу

Добавлено: 05 Декабрь 2018, 10:52
kreator
А никто не знает как показать демонстрацию PowerPoint, расширение ppsx. Программно. Может ActiveX какой есть?

Показ слайд-шоу

Добавлено: 05 Декабрь 2018, 11:38
Yufil
Сконвертировать в формат Flash. Flash показать ...
https://sites.google.com/site/multimedi ... t-vo-flash

Показ слайд-шоу

Добавлено: 05 Декабрь 2018, 11:48
vic7tar
kreator, а в сторону создания screen saver-а не смотрели?

Показ слайд-шоу

Добавлено: 05 Декабрь 2018, 12:14
kreator
Yufil писал(а): 05 Декабрь 2018, 11:38 Сконвертировать в формат Flash. Flash показать ...
https://sites.google.com/site/multimedi ... t-vo-flash
Ха! В PowerPoint'е можно конвертнуть в wmv. Просто и легко. Но есть чудные пользователи/заказчики :mrgreen: .
vic7tar писал(а): 05 Декабрь 2018, 11:48 kreator, а в сторону создания screen saver-а не смотрели?
Слайд-шоу показывается когда нет работы в программе. Но программа в это время находиться в ожидании считывания либо штрих-кода с бумажки либо со считывателя магнитных карт. Не уверен, что в режиме скринсэйвера смогу считать нужную инфу и вывести комп из сна.

Показ слайд-шоу

Добавлено: 05 Декабрь 2018, 12:31
Yufil
Была у нас давным-давно неудачная попытка - Office viewer ActiveX control называлось. Не держала правильный размер ActiveX, зависала после открытия, требовала наличия Office на клиентском компьютере - в общем, не срослось.
Поищи, мож починили ...