WPF 多张Image复制到剪切板

      Clipboard.SetImage()使用这个函数时,如果从服务器获取Image的话,会生成黑色背景的图片,可能是一下原因导致的问题
  • 图片源的格式:某些格式的图片可能不受 WPF 的 SetImage 方法支持或处理,从而导致黑色图像。
  • 内存限制:WPF 可能无法访问足够的内存来正确处理给定的图像。
  • 应用程序权限:应用程序可能没有足够的权限来在剪贴板上执行所需操作。

      经过调查,使用Graphics的DrawImage重绘图片时可以避免问题:

  Bitmap[] originalImages = new Bitmap[]

     { new Bitmap("Image1.jpg"),

       new Bitmap("Image2.jpg"),

       new Bitmap("Image3.jpg"),

       new Bitmap("Image4.jpg"),

       new Bitmap("Image5.jpg"),

       new Bitmap("Image6.jpg"),

     };

       int imageWidth = originalImages[0].Width; 

       int imageHeight = originalImages[0].Height;

       Bitmap targetImage = new Bitmap(imageWidth * 2, imageHeight * 3);

       using (Graphics g = Graphics.FromImage(targetImage))

      {

             int index = 0;  

            for (int row = 0; row < 3; row++) 

            {  

                for (int col = 0; col < 2; col++) { g.DrawImage(originalImages[index], col * imageWidth, row * imageHeight);

                index++; 

           } } }

        Clipboard.Clear();

        Clipboard.SetDataObject(targetImage);

        

posted @ 2023-05-19 17:39  YJin1  阅读(202)  评论(1)    收藏  举报