Страница 1 из 2
Показ слайд-шоу
Добавлено: 24 Март 2017, 11:44
kreator
Заказчик сошёл с ума
. Просит во время бездействия программы показывать слайд-шоу из фото и видеоматериалов. Вопрос - винапишная функция mcisendstring может показывать скажем jpeg? С показом видео у меня вроде опыт есть. Хотелось бы одной функцией пользоваться. Или может есть вообще какой-нибудь красивый вариант - послать функции каталог с этими материалами, пусть сама всё делает?
Показ слайд-шоу
Добавлено: 24 Март 2017, 11:46
Ал
kreator писал(а):Заказчик сошёл с ума
. Просит во время бездействия программы показывать слайд-шоу из фото и видеоматериалов. Вопрос - винапишная функция 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
Показ слайд-шоу
Добавлено: 05 Декабрь 2018, 11:48
vic7tar
kreator, а в сторону создания screen saver-а не смотрели?
Показ слайд-шоу
Добавлено: 05 Декабрь 2018, 12:14
kreator
Ха! В PowerPoint'е можно конвертнуть в wmv. Просто и легко. Но есть чудные пользователи/заказчики
.
vic7tar писал(а): ↑05 Декабрь 2018, 11:48
kreator, а в сторону создания screen saver-а не смотрели?
Слайд-шоу показывается когда нет работы в программе. Но программа в это время находиться в ожидании считывания либо штрих-кода с бумажки либо со считывателя магнитных карт. Не уверен, что в режиме скринсэйвера смогу считать нужную инфу и вывести комп из сна.
Показ слайд-шоу
Добавлено: 05 Декабрь 2018, 12:31
Yufil
Была у нас давным-давно неудачная попытка - Office viewer ActiveX control называлось. Не держала правильный размер ActiveX, зависала после открытия, требовала наличия Office на клиентском компьютере - в общем, не срослось.
Поищи, мож починили ...