需將一張圖片與一段文字合成為一個複合數據對象,放入剪貼板,以便粘貼到 Word、微信等富文本編輯器中同時顯示圖文。
DataObject 設置多種格式using System.Windows.Forms;
using System.Drawing;
public void SetImageAndTextToClipboard(Image img, string text) {
DataObject data = new DataObject();
// 設置圖片格式
data.SetData(DataFormats.Bitmap, true, img);
// 設置純文本格式
data.SetData(DataFormats.Text, true, text);
// 設置 HTML 格式(可選,支援富文本粘貼)
string html = $@"<html><body><img src='{ImageToBase64(img)}'><br>{text}</body></html>";
data.SetData(DataFormats.Html, true, html);
Clipboard.SetDataObject(data, true); // true: 應用退出後仍保留
}
// 輔助:圖片轉 Base64 Data URI
private string ImageToBase64(Image img) {
using (var ms = new System.IO.MemoryStream()) {
img.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
byte[] bytes = ms.ToArray();
return "data:image/png;base64," + Convert.ToBase64String(bytes);
}
}
| 格式 | 用途 | 目標應用支援 |
|---|---|---|
DataFormats.Bitmap | 位圖圖片 | Paint, Word, 微信等 |
DataFormats.Text | 純文本 | 所有編輯器 |
DataFormats.Html | HTML 片段(含圖片 Data URI) | Word, Outlook, 瀏覽器編輯器 |
DataFormats.Rtf | 富文本格式 | Word, WordPad |
剪貼板 HTML 格式需包含 StartHTML/EndHTML 等標記,參考 MSDN HTML Clipboard Format。簡化版可用 HtmlFragment 類庫生成。
通過 DataObject 同時設置 Bitmap、Text、HTML 等多種格式,即可實現圖文合成進剪貼板,滿足不同目標應用的粘貼需求。