Проблемы с параметром DigitalZoom в DSPack:
================================================== ================================================== ======================
Короче говоря тема такая, все знают что в
DsPack есть два компонента типа видео экрана - это "
VideoWindows и
DSVideoWindowsEx". У меня при работе с компонентом "
VideoWindows" возникают проблемы в области параметра "
DigitalZoom". А именно "
VideoWindows" вообще похоже не поддерживает данный параметр... Что же мне делать, для того что бы реализовать масштабирование картинки на объекте "
VideoWindows"???
Вот имеется некий код, но не совсем понятно как им воспользоваться:
Код:
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: Прошу помочь, всех желающих!