2012-07-19 2 views
1

카메라 응용 프로그램에서 확대/축소 기능을 제공하려고합니다.이 목적을 위해 MediaCapture 클래스를 사용하고 있으며 MediaCapture의 다른 모든 기능이 줌을 제외하고 제대로 작동하고 있습니다. 다음 코드를 사용하여 달성하고 있습니다. 줌 :카메라 줌 문제 Windows 8

private void zoomSlider_ValueChanged(object sender, Windows.UI.Xaml.Controls.Primitives.RangeBaseValueChangedEventArgs e) 
{ 
    m_mediaCaptureMgr.VideoDeviceController.Zoom.TrySetValue(zoomSlider.Value); 
} 

그러나 그 작동하지 PLZ 그것을 어떻게 말해?

편집 : 코드 형식 보정

답변

3

U는 XAML

<CaptureElement x:Name="previewElement1" Width="1366" Height="672"> 
       <CaptureElement.RenderTransform> 
        <ScaleTransform x:Name="zoom"/> 
       </CaptureElement.RenderTransform> 
       </CaptureElement> 

<Slider Width="30" Height="300" Name="zoomSlider" ValueChanged="zoomSlider_ValueChanged_1" /> 

및 C#에서이 등으로도 줌 카메라 뷰가

private void zoomSlider_ValueChanged_1(object sender, Windows.UI.Xaml.Controls.Primitives.RangeBaseValueChangedEventArgs e) 
{ 
    try 
    { 
     zoom.ScaleX = zoomSlider.Value; 
     zoom.ScaleY = zoomSlider.Value; 
     zoom.CenterX = 683; 
     zoom.CenterY = 384; 
    } 
    catch (Exception) 
    { 
    } 
} 
2

<ScaleTransform>의 줌을 수정하지 않습니다 수 카메라. 단지 이미지를 확대하기 때문에 동일한 이미지가 더 픽셀 화 된 것을 볼 수 있습니다.

카메라의 줌은 ZoomControl 클래스에 의해 제어됩니다. 그것은 MediaCapture 클래스 안에 있습니다.

예 : Slider 요소는 카메라의 줌을 변경합니다. Slider

<CaptureElement x:Name="captureElement" 
       Stretch="UniformToFill" /> 

<Slider x:Name="sliderZoom" 
     Width="250" 
     ValueChanged="sliderZoom_ValueChanged"/> 

구성 : ZoomControl.Step에 동일하지

private void sliderZoom_ValueChanged(object sender, RangeBaseValueChangedEventArgs e) 
{ 
    if(this._mediaCapture.VideoDeviceController.ZoomControl.Supported) 
    { 
     this._mediaCapture.VideoDeviceController.ZoomControl.Value = (float)e.NewValue; 
    } 
} 

StepFrequency 경우이 오류가 될 것입니다 다음 Slider이 값을 변경하면

MediaCapture _mediaCapture; 

// Initialization of the MediaCapture ... 

if(this._mediaCapture.VideoDeviceController.ZoomControl.Supported) 
{ 
    sliderZoom.Minimum = this._mediaCapture.VideoDeviceController.ZoomControl.Min; 
    sliderZoom.Maximum = this._mediaCapture.VideoDeviceController.ZoomControl.Max; 
    sliderZoom.StepFrequency = this._mediaCapture.VideoDeviceController.ZoomControl.Step; 
} 

카메라의 줌을 수정 확대/축소시 표시되는 값 :

An exception of type 'System.ArgumentException' occurred in ....exe but was not handled in user code 
WinRT information: Zoom factor 
Additional information: The parameter is incorrect.