क्रोम क्लिप को 24bpp प्रारूप में क्लिपबोर्ड पर कॉपी करता है। जो पारदर्शिता को काला में बदल देता है। आप क्लिपबोर्ड से 32 बीपीपी प्रारूप प्राप्त कर सकते हैं लेकिन इसके लिए डीआईबी प्रारूप को संभालने की आवश्यकता है।
private Image GetImageFromClipboard() {
if (Clipboard.GetDataObject() == null) return null;
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Dib)) {
var dib = ((System.IO.MemoryStream)Clipboard.GetData(DataFormats.Dib)).ToArray();
var width = BitConverter.ToInt32(dib, 4);
var height = BitConverter.ToInt32(dib, 8);
var bpp = BitConverter.ToInt16(dib, 14);
if (bpp == 32) {
var gch = GCHandle.Alloc(dib, GCHandleType.Pinned);
Bitmap bmp = null;
try {
var ptr = new IntPtr((long)gch.AddrOfPinnedObject() + 40);
bmp = new Bitmap(width, height, width * 4, System.Drawing.Imaging.PixelFormat.Format32bppArgb, ptr);
return new Bitmap(bmp);
}
finally {
gch.Free();
if (bmp != null) bmp.Dispose();
}
}
}
return Clipboard.ContainsImage() ? Clipboard.GetImage() : null;
}
नमूना उपयोग:: वहाँ में निर्मित है कि System.Drawing में के लिए समर्थन नहीं है, तो आप एक छोटे से सहायक समारोह है कि रूपांतरण बनाने की जरूरत है
protected override void OnPaint(PaintEventArgs e) {
using (var bmp = GetImageFromClipboard()) {
if (bmp != null) e.Graphics.DrawImage(bmp, 0, 0);
}
}
कौन सा रूप के साथ इस स्क्रीन-शॉट का उत्पादन एक शेयर बिटमैप को BackgroundImage संपत्ति सेट:

स्रोत
2012-06-30 12:34:42
वास्तव में, यह वास्तव में अपने क्लिपबोर्ड पर डाल नहीं है मान्य 'Format17' क्रोम लगता है, और न ही यह प्रबंध करता है ई 'स्वरूप 17' पेस्ट करने के लिए जब मैं इसे क्लिपबोर्ड पर प्रोग्रामेटिक रूप से डालता हूं। – Nyerguds