|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Проблемы с параметром DigitalZoom в DSPack
Проблемы с параметром 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. |