這是一個奇怪的一個: 我最近升級我的工作站從Windows 7到Windows 10,我有一個聊天客戶端,是使用下面的代碼從剪貼板接受圖片:在Windows 10上使用Clipboard.GetImage()後從屏幕截圖擦除文本?
if (Clipboard.ContainsImage())
{
BitmapSource source = Clipboard.GetImage();
BitmapFrame frame = BitmapFrame.Create(source);
var encoder = new System.Windows.Media.Imaging.PngBitmapEncoder();
encoder.Frames.Add(frame);
var stream = new MemoryStream();
encoder.Save(stream);
byte[] daten = stream.ToArray();
if (daten != null && daten.Length > 0)
{
sendFile(DateTime.Now.ToString("yyyyMMddHHmmss_") + "clipboard.png", stream.ToArray());
}
}
這裏是區域我截圖應該樣子(例如,如果我把它粘貼到MS-畫圖或直接從截圖工具保存):
現在這裏是什麼樣子,我導入使用Clipboard.GetImage();
截圖後。
正如您所看到的,所有文本都會被擦除,如果您仔細觀察,可以看到通常爲白色的背景現在是透明的。
如果我使用JpegBitmapEncoder
而不是PngBitmapEncoder
,它工作得很好,所以這是properbly編碼的問題,但什麼baffels我是這樣的:
- 這從未happend在Windows 7上 - 什麼已經在Windows 10改變 可以使截圖有什麼不同?
- 如果我從截屏工具將屏幕截圖保存到文件中,將創建一個PNG(在數據本身中帶有PNG-Header)。那麼,爲什麼PNG不是正確的編碼?
奇怪......據我所知,Windows剪貼板甚至沒有_support_透明度。 – Nyerguds
將它粘貼到Gimp中肯定不起作用...更不用說,您屏幕截圖的窗口在那裏沒有透明度。 – Nyerguds
如果您刪除所有alpha,圖像仍包含所有信息。我想我明白了,但我不是100%肯定的。你使用的是什麼版本的.net框架?因爲3.5版似乎沒有這樣做,但版本4+可能會有不同的反應。 – Nyerguds