zoukankan      html  css  js  c++  java
  • C# WIN7电脑双屏设置不同内容的桌面

    WIN7电脑连接双屏时,设置壁纸会有两个比较麻烦的问题:

    1.  如果两个屏幕的分辨率不同,在设置桌面时会导致左右屏幕显示效果不一样。

    2.  无法将左右两个屏幕的壁纸设置为不同的图片。

    解决办法是:将两张图片合成为一张新的图片,再将这张新的图片设置为壁纸即可。

    假设屏幕关系如图:

     

    步骤如下:

    1. 新建一张图片,宽度是 屏幕1的宽度加上屏幕2的宽度,高度是较高的那个屏幕的高度。

    2. 图片1缩放为屏幕1的大小,左侧放到最左,顶部放置到最上

    3. 图片2缩放为屏幕2的大小,左侧放到屏幕1的最右侧位置,顶部放置到最上

    理论上使用windows自带的画图工具也可以做出,新图片的实际效果如下:

    左下角的黑色部分在设置壁纸后并不会显示,不会影响显示效果。

    图片1和图片2可以使用同一张图片。

    上面是原理,以下是代码,可以自动根据屏幕分辨率合成适合的壁纸。

       int width1 = Screen.PrimaryScreen.Bounds.Width;
       int height1 = Screen.PrimaryScreen.Bounds.Height;
    
       int width2 = Screen.AllScreens[1].Bounds.Width;
       int height2 = Screen.AllScreens[1].Bounds.Height;
    
       using (Bitmap leftfileImage = new Bitmap(leftFile), rightfileImage = new Bitmap(rightFile), newimage = new Bitmap(width1 + width2, height1 > height2 ? height1 : height2))
       {
         using (Graphics newimagegp = Graphics.FromImage(newimage))
         {
            newimagegp.DrawImage(leftfileImage, new RectangleF(0, 0, width1, height1), new RectangleF(0, 0, leftfileImage.Width, leftfileImage.Height), GraphicsUnit.Pixel);
            newimagegp.DrawImage(rightfileImage, new RectangleF(width1, 0, width2, height2), new RectangleF(0, 0, rightfileImage.Width, rightfileImage.Height), GraphicsUnit.Pixel);
            newimage.Save("新图片.jpg", ImageFormat.Jpeg);
         }
       }               

    leftFile和rightFile是图片地址,分别用于左边屏幕及右边屏幕。

    配合上一篇文章的设置桌面的方法,再加上定时器,即可实现双屏壁纸随机生成定时更换的功能。

  • 相关阅读:
    C#基础第五天-作业-用DataTable制作名片集
    C#基础第四天-作业答案-Hashtable-list<KeyValuePair>泛型实现名片
    C#基础第四天-作业-Hashtable-list<KeyValuePair>泛型实现名片
    C#基础第三天-作业答案-集合-冒泡排序-模拟名片
    C#基础第三天-作业-集合-冒泡排序-模拟名片
    C#基础第二天-作业答案-九九乘法表-打印星星
    C#基础第二天-作业-九九乘法表-打印星星
    C#基础第一天-作业答案
    C#基础第一天-作业
    C#-string.Format对C#字符串格式化
  • 原文地址:https://www.cnblogs.com/xyz0835/p/9277749.html
Copyright © 2011-2022 走看看