WPF 复制粘贴到系统粘贴板中以供鼠标右键粘贴
作者:互联网
复制到剪切板
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