Tag: 位图

从剪贴板复制到剪贴板会丢失图像透明度

我一直在尝试将透明的PNG图像复制到剪贴板并保留其透明度,以将其粘贴到支持它的特定程序中。 我已经尝试了很多解决方案,但背景总是以这种或那种方式变灰。 所以我尝试使用Chrome复制相同的图像并将其粘贴到程序中并且它有效。 它保持了透明度。 然后我尝试从剪贴板中获取我使用Chrome复制的图像并再次设置图像,期望透明度仍然存在 – 但是,即使我刚从剪贴板中取出图像并设置它,也不会保留透明度再次。 var img = Clipboard.GetImage(); // copied using Chrome and transparency is preserved Clipboard.SetImage(img); // transparency lost 即使我使用System.Windows.Forms.Clipboard或尝试获取并设置DataObject而不是Image,也会出现同样的问题。

快速将Bitmap转换为BitmapSource wpf

我需要在30Hz处在Image组件上绘制图像。 我用这个代码: public MainWindow() { InitializeComponent(); Messenger.Default.Register(this, (bmp) => { ImageTarget.Dispatcher.BeginInvoke((Action)(() => { var hBitmap = bmp.GetHbitmap(); var drawable = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap( hBitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); DeleteObject(hBitmap); ImageTarget.Source = drawable; })); }); } 问题是,使用此代码,我的CPU使用率约为80%,如果没有转换,则大约为6%。 那么为什么转换位图这么长? 是否有更快的方法(使用不安全的代码)?