![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Проблемы с параметром DigitalZoom в DSPack:
================================================== ================================================== ====================== Короче говоря тема такая, все знают что в DsPack есть два компонента типа видео экрана - это "VideoWindows и DSVideoWindowsEx". У меня при работе с компонентом "VideoWindows" возникают проблемы в области параметра "DigitalZoom". А именно "VideoWindows" вообще похоже не поддерживает данный параметр... Что же мне делать, для того что бы реализовать масштабирование картинки на объекте "VideoWindows"??? ![]() Вот имеется некий код, но не совсем понятно как им воспользоваться: Код:
uses DirectShow9 Код:
private { Provate declarations } pZoom: Integer; pVideoRenderer: IBaseFilter; procedure SetZoom(Value: Integer); end; Код:
procedure TForm1.SetZoom(Value: Integer); var Ratio: Real; BasicVideo: IBasicVideo2; TmpLeft, TmpX, TmpTop, TmpY: Real; SetLeft, SetTop, SetWidth, SetHeight: Integer; begin if (Value < 0) or (Value > 99) then begin raise Exception.CreateFmt('Значение %d по ракурсу. Значение допустимое от 0 и 99', [Value]); Exit; end; if (csDesigning in ComponentState) or (pVideoRenderer = nil) then //Возможны проблемы!!! begin pZoom := Value; Exit; end; BasicVideo := nil; try if (pVideoRenderer.QueryInterface(IID_IBasicVideo2, BasicVideo) = S_OK) then begin BasicVideo.SetDefaultSourcePosition; BasicVideo.Get_SourceLeft(SetLeft); BasicVideo.Get_SourceTop(SetTop); BasicVideo.Get_SourceWidth(SetWidth); BasicVideo.Get_SourceHeight(SetHeight); Ratio := SetHeight / SetWidth; TmpX := SetWidth - ((Value * SetWidth) / 100); TmpY := TmpX * Ratio; TmpLeft := (SetWidth - TmpX) / 2; TmpTop := (SetHeight - TmpY) / 2; BasicVideo.Put_SourceWidth(Trunc(TmpX)); BasicVideo.Put_SourceHeight(Trunc(TmpY)); BasicVideo.Put_SourceLeft(Trunc(TmpLeft)); BasicVideo.Put_SourceTop(Trunc(TmpTop)); end; pZoom := Value; finally BasicVideo := nil; end; Exit; end; P.S: Прошу помочь, всех желающих! ![]() Последний раз редактировалось Midmal, 10.11.2009 в 14:19. |