WPF 复制粘贴到系统粘贴板中以供鼠标右键粘贴
复制到剪切板
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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); |
复制到剪切板
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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); } |
复制或剪切文件到剪切板
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /// <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 ); } |
复制文本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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( "数据复制成功" ); } |
保存图片
1 2 3 4 5 6 7 8 9 10 11 12 13 | // 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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
1 2 3 | MemoryStream memoryStream = new MemoryStream(); encoder.Save(memoryStream); System.Drawing.Image img = System.Drawing.Image.FromStream(memoryStream); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!