2012-07-19 47 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元素更改相机的变焦。

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

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

配置的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; 
} 

修改相机的变焦时的Slider改变其值:

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

如果StepFrequency不等于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.