.net 在C#中使用枚举

rbl8hiat  于 2023-06-25  发布在  .NET
关注(0)|答案(5)|浏览(194)

我正在为Windows Phone Mango编写我的第一个C#应用程序。它被设计成一个非常简单的手电筒应用程序。
以前,在Windows Phone上无法访问相机的闪光灯,但在这个最新版本中,它是。以下是关于它的文档:
http://msdn.microsoft.com/en-us/library/microsoft.devices.flashmode(v=vs.92).aspx
不幸的是,这对我来说毫无意义。我已经设置了按钮和if-then语句,用于在单击时切换按钮图标和文本。我就是不知道怎么打开和关闭闪光灯。我希望你能给我一个明确的例子,这样我就可以结束了。
对于那些不想离开网站的人......该链接基本上是这样说的:
public enum FlashMode
Members: On, Off, Auto, RedEyeReduction

9q78igpj

9q78igpj1#

FlashMode枚举只是表示FlashMode有效值的一组值。然而,FlashMode似乎定义了闪光灯在拍照时的行为。“开”似乎意味着闪光灯会一直 Flink 。这似乎并不意味着光本身在不断产生光的意义上是“开”的。
有一点支持这一点的证据:FlashMode文档说FlashMode.On表示“相机闪光灯已启用”。

falq053o

falq053o2#

你看到这个链接了吗?
http://msdn.microsoft.com/en-us/library/hh202949(v=vs.92).aspx
如果有一个名为“cam”的变量可供您使用(免责声明:我对移动设备一无所知),您需要更改FlashMode属性。所以当你点击按钮的时候

cam.FlashMode = FlashMode.On

编辑:进一步查看后,“cam”变量似乎是PhotoCamera类的示例。因此,这可能需要在您的应用程序中构建。这个链接也可能在这方面有所帮助。
http://msdn.microsoft.com/en-us/library/hh202956(v=vs.92).aspx

mnowg1ta

mnowg1ta3#

在MSDN上有一个很好的解释,所以我不会在这里重新创建,但本质上已经创建了一个新的类型来简化赋值。而不是必须记住(例如)'On'等于0,'Off'等于1,您可以使用FlashMode.On代替。当然,这些枚举只表示值,因此您仍然需要将其分配给某个对象。
例如,我在您提供的链接中找到了以下链接:
cam.FlashMode = FlashMode.On;
这看起来很有趣所以祝你好运!

ltqd579y

ltqd579y4#

如果你正在尝试制作某种手电筒应用程序,根据this,没有LED的API

yi0zb3m4

yi0zb3m45#

若要在Windows Phone Mango应用程序中控制手电筒,可以使用Microsoft.Devices.FlashMode枚举。下面是一个演示如何打开和关闭闪光灯的示例:
使用Microsoft.Devices复制代码;
//我的朋友
public partial class MainPage:{ private FlashMode currentFlashMode = FlashMode.Off;

// Constructor
public MainPage()
{
    InitializeComponent();
}

private void ToggleFlashlight()
{
    if (currentFlashMode == FlashMode.Off)
    {
        if (Camera.IsFlashModeSupported(FlashMode.On))
        {
            Camera cam = new Camera();
            cam.Initialized += (s, e) =>
            {
                cam.FlashMode = FlashMode.On;
                cam.FlashModeChanged += Cam_FlashModeChanged;
            };
            cam.InitializationFailed += (s, e) =>
            {
                // Failed to initialize camera
                // Handle the error
            };
            cam.Initialize();
        }
        else
        {
            // Flash mode is not supported
            // Handle the error or provide alternative functionality
        }
    }
    else if (currentFlashMode == FlashMode.On)
    {
        if (Camera.IsFlashModeSupported(FlashMode.Off))
        {
            Camera cam = new Camera();
            cam.Initialized += (s, e) =>
            {
                cam.FlashMode = FlashMode.Off;
                cam.FlashModeChanged += Cam_FlashModeChanged;
            };
            cam.InitializationFailed += (s, e) =>
            {
                // Failed to initialize camera
                // Handle the error
            };
            cam.Initialize();
        }
        else
        {
            // Flash mode is not supported
            // Handle the error or provide alternative functionality
        }
    }
}

private void Cam_FlashModeChanged(object sender, EventArgs e)
{
    // Flash mode changed event handler
    currentFlashMode = ((Camera)sender).FlashMode;
    // Update UI or perform additional actions based on the new flash mode
}

private void FlashlightButton_Click(object sender, RoutedEventArgs e)
{
    ToggleFlashlight();
}

}在此示例中,单击手电筒按钮时调用ToggleFlashlight方法。它检查当前闪光灯模式并相应地初始化相机。如果闪光灯模式关闭,则检查是否支持闪光灯模式“开”,然后将闪光灯模式设置为“开”来初始化相机。如果闪光灯模式已经打开,则检查是否支持闪光灯模式“关”,然后将闪光灯模式设置为“关”来初始化相机。
Cam_FlashModeChanged事件处理程序用于处理闪光模式更改事件。在此处理程序中,您可以更新UI或基于新的flash模式执行任何其他操作。
请确保向项目中添加必要的引用(Microsoft.Devices和Microsoft.Xna.Framework),以便成功编译代码。
请记住处理异常,并处理不支持flash模式或初始化失败的情况。

相关问题