首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >相机缩放问题Windows 8

相机缩放问题Windows 8
EN

Stack Overflow用户
提问于 2012-07-19 11:04:26
回答 2查看 1.6K关注 0票数 1

我试图在相机应用程序中提供缩放功能,为此我使用的是MediaCapture类,除缩放之外,MediaCapture的所有其他功能都正常工作,我使用以下代码来实现缩放:

代码语言:javascript
复制
private void zoomSlider_ValueChanged(object sender, Windows.UI.Xaml.Controls.Primitives.RangeBaseValueChangedEventArgs e)
{
    m_mediaCaptureMgr.VideoDeviceController.Zoom.TrySetValue(zoomSlider.Value);
}

但这不管用,请告诉我怎么做??

编辑:代码格式更正

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-21 06:02:34

在XAML中,你也可以像这样缩放相机视图。

代码语言:javascript
复制
<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#中

代码语言:javascript
复制
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)
    {
    }
}
票数 3
EN

Stack Overflow用户

发布于 2014-12-30 21:09:29

<ScaleTransform>不修改相机的缩放。它只是放大了图像,所以您将看到相同的图像更像素化。

相机的变焦由ZoomControl类控制。它位于MediaCapture类中。

示例:Slider元素更改相机的缩放。

代码语言:javascript
复制
<CaptureElement x:Name="captureElement"
                Stretch="UniformToFill" />

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

Slider的配置

代码语言:javascript
复制
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更改其值时,修改相机的缩放:

代码语言:javascript
复制
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,则在试图修改缩放时将显示此错误:

代码语言:javascript
复制
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.
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11559484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档