ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

WPF 复制粘贴到系统粘贴板中以供鼠标右键粘贴

2022-07-28 13:05:48  阅读:138  来源: 互联网

标签:中以 粘贴板 inside System int bmp 右键 scalimg new


 复制到剪切板

Transform transform = inside.LayoutTransform;
inside.LayoutTransform = null;
Point point = outside.TranslatePoint(new Point(), inside);
imgx = point.X; imgy = point.Y;
System.Windows.Size size = new System.Windows.Size(inside.Width * scalimg, inside.Height * scalimg);
inside.Measure(size);
inside.Arrange(new Rect(imgx * scalimg, imgy * scalimg, size.Width * scalimg, size.Height * scalimg));
double scale = 300 / 96 * scalimg;
RenderTargetBitmap bmp = new RenderTargetBitmap((int)(scale * (size.Width + 1)),
                                                                  (int)(scale * (size.Height + 1)),
                                                                  scale * 96,
                                                                  scale * 96, PixelFormats.Default);

bmp.Render(inside);
System.Windows.Clipboard.SetImage(bmp);

复制到剪切板

public static voidCopyUIElementToClipboard(FrameworkElementui)
{
doublewidth = ui.ActualWidth;
doubleheight = ui.ActualHeight;
RenderTargetBitmapbmp = newRenderTargetBitmap((int)Math.Round(width),
(int)Math.Round(height), 96, 96, PixelFormats.Default);
DrawingVisualdv = newDrawingVisual();
using(DrawingContextdc = dv.RenderOpen())
{
VisualBrushvb = newVisualBrush(ui);
dc.DrawRectangle(vb, null,newRect(newPoint(), newSize(width, height)));
}
bmp.Render(dv);
Clipboard.SetImage(bmp);
}

  

复制或剪切文件到剪切板

/// <summary>
        /// 复制或剪切文件到剪切板
        /// </summary>
        /// <param name="files">文件路径数组</param>
        /// <param name="cut">true:剪切;false:复制</param>
        public static void CopyToClipboard(string[] files, bool cut)
        {
            if (files == null) return;
            IDataObject data = new DataObject(DataFormats.FileDrop, files);
            MemoryStream memo = new MemoryStream(4);
            byte[] bytes = new byte[] { (byte)(cut?2:5),0,0,0};
            memo.Write(bytes,0,bytes.Length);
            data.SetData("PreferredDropEffect",memo);
            Clipboard.SetDataObject(data,false);
        }

复制文本

  private void La_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
        {
            StackPanel st = e.Source as StackPanel;
            StringBuilder Copystr = new StringBuilder();
            foreach (TextBox tb in GetChildObjects<TextBox>(st))
            {
                Copystr.Append(" ");
                Copystr.Append(tb.Text);
                SolidColorBrush myBrush = new SolidColorBrush(System.Windows.Media.Color.FromArgb(0xFF, 0xad, 0xd6, 0xff));
                tb.Background = myBrush;
            }
            Clipboard.SetText(Copystr.ToString());
            MessageToolTip.Show("数据复制成功");
        }

保存图片

// UI --> Png
public static void UISaveToPng(this FrameworkElement ui, string fileName)
{
    int width = (int)ui.ActualWidth;
    int height = (int)ui.ActualHeight;
    RenderTargetBitmap bmp = new RenderTargetBitmap(width, height, 96d, 96d, PixelFormats.Pbgra32);
    bmp.Render(ui);
    PngBitmapEncoder encoder = new PngBitmapEncoder();
    encoder.Frames.Add(BitmapFrame.Create(bmp));
    FileStream fs = new FileStream(fileName, FileMode.Create);
    encoder.Save(fs);
    fs.Close();
}

转BitmapImage

int width = (int)grid2DMap.ActualWidth;
int height = (int)grid2DMap.ActualHeight;
RenderTargetBitmap bmp = new RenderTargetBitmap(width, height, 96d, 96d, PixelFormats.Pbgra32);
bmp.Render(grid2DMap);
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmp));
BitmapImage bitmapImage = new BitmapImage();
using (var memoryStream = new MemoryStream())
{
    encoder.Save(memoryStream);
    memoryStream.Seek(0, SeekOrigin.Begin);
    bitmapImage.BeginInit();
    bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
    bitmapImage.StreamSource = memoryStream;
    bitmapImage.EndInit();
}

转System.Drawing.Image

MemoryStream memoryStream = new MemoryStream();
encoder.Save(memoryStream);
System.Drawing.Image img = System.Drawing.Image.FromStream(memoryStream);

  

标签:中以,粘贴板,inside,System,int,bmp,右键,scalimg,new
来源: https://www.cnblogs.com/guangzhiruijie/p/16528227.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有