c# 控制音量大小 CoreAudioApi

        为了方便客户使用,在系统首页面用户可以设置系统音量,本来感觉应该很简单的事情,但是在网上搜索了大量的解决方法。在自己的电脑上都起不了作用。最多的还是调用微软的系统API. 代码基本上就是

第一种方式   测试了下 根本无法设置音量也无法获取当前音量大小  
        [DllImport("winmm.dll")]
        public static extern long waveOutSetVolume(UInt32 deviceID, UInt32 Volume);
        [DllImport("winmm.dll")]
        public static extern long waveOutGetVolume(UInt32 deviceID, out UInt32 Volume);

第二种方式 可以设置音量增加或者减小 但是无法统当前音量 没找到对应的API

/// <summary>
        /// 改变系统音量大小,增加
        /// </summary>
        public void VolumeUp()
        {
            keybd_event(VK_VOLUME_UP, MapVirtualKey(VK_VOLUME_UP, 0), KEYEVENTF_EXTENDEDKEY, 0);
            keybd_event(VK_VOLUME_UP, MapVirtualKey(VK_VOLUME_UP, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
        }

         ///<summary>
        /// 改变系统音量大小,减小
        /// </summary>
        public void VolumeDown()
        {
            keybd_event(VK_VOLUME_DOWN, MapVirtualKey(VK_VOLUME_DOWN, 0), KEYEVENTF_EXTENDEDKEY, 0);
            keybd_event(VK_VOLUME_DOWN, MapVirtualKey(VK_VOLUME_DOWN, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
        }

最后从网上找到了另一种方式 通过CoreAudioApi 通过测试确实能用。

  CoreAudioApi.MMDeviceEnumerator devices = new MMDeviceEnumerator();
  MMDevice device = devices.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);
    device.AudioEndpointVolume.MasterVolumeLevel = trackBar1.Value;//(直接设置音量  也可以调用方法设置音量增加减少)
     trackBar1.Value = (int)device.AudioEndpointVolume.MasterVolumeLevel;//(获取当前音量并且通过trackBar1显示)
 希望各位提供自己更好的解决方式。
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
你可以使用C#的System.Drawing命名空间来手动控制图片的大小。以下是一个示例代码,演示了如何将图片缩放到指定的宽度和高度: ```csharp using System; using System.Drawing; class Program { static void Main() { // 读取图片文件 Image originalImage = Image.FromFile("path/to/image.jpg"); // 指定目标宽度和高度 int targetWidth = 800; int targetHeight = 600; // 创建一个新的Bitmap对象,并设置其宽度和高度 Bitmap resizedImage = new Bitmap(targetWidth, targetHeight); // 创建一个Graphics对象,用于处理图像操作 using (Graphics graphics = Graphics.FromImage(resizedImage)) { // 设置绘制质量和插值模式 graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; // 绘制缩放后的图像 graphics.DrawImage(originalImage, 0, 0, targetWidth, targetHeight); } // 保存缩放后的图像 resizedImage.Save("path/to/resized_image.jpg"); // 释放资源 originalImage.Dispose(); resizedImage.Dispose(); } } ``` 在上述代码中,你需要将`"path/to/image.jpg"`替换为你的输入图片的实际路径,将`targetWidth`和`targetHeight`替换为你想要的目标宽度和高度。缩放后的图像将保存为`"path/to/resized_image.jpg"`。 这个示例使用了`Graphics`对象来处理图像的缩放操作,并设置了一些绘制参数以提高图像质量。你可以根据需要进行修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值