首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 圖形中級篇:剪貼簿操作、系統色彩與折射效應原理(第六講·下)

     編輯:關於C語言

Copy 方法:多格式剪貼簿支援

public void Copy() {
    var sb = new StringBuilder();
    foreach (var row in myDocument) {
        bool found = false;
        foreach (var cell in row) if (cell.Selected) {
            sb.Append(cell.Text).Append(' ');
            found = true;
        }
        if (found) sb.AppendLine();
    }
    if (sb.Length > 0) {
        var data = new DataObject();
        data.SetData(sb.ToString()); // 純文字
        Clipboard.SetDataObject(data, true); // true = 程式結束後資料保留
    }
}

關鍵點:

  • DataObject 可同時放入多種格式(文字、RTF、圖片),目標應用程式自行挑選可用格式。
  • 貼上時用 Clipboard.GetDataObject() 取得 IDataObject,再以 GetFormats() 檢查可用格式,DataFormats 類別預定義常見格式名稱。

系統預定義色彩:與 OS 視覺風格同步

  • SystemBrushes:提供 Highlight、Window、ControlText 等預建畫刷。
  • SystemPens:對應畫筆。
  • SystemColors:對應色彩值(Color 結構)。

系統色彩設定對話框

使用系統色彩可讓應用程式**自動適應使用者的桌面主題**(高對比度、深色模式等),提升一致性體驗。

折射效應:從物理光學到 UI 座標轉換

物理類比

水中魚因折射位置偏移,伸手抓取需修正軌跡。UI 中捲動導致「文檔視圖座標」與「客戶區座標」產生固定位移 AutoScrollPosition,同樣需修正。

程式碼實踐

// OnPaint 開頭:整體座標系平移,模擬折射修正
e.Graphics.TranslateTransform(AutoScrollPosition.X, AutoScrollPosition.Y);

// 滑鼠事件中:客戶區座標 → 視圖座標
Point p = new Point(e.X, e.Y);
p.Offset(-AutoScrollPosition.X, -AutoScrollPosition.Y);

核心原則:繪製時將視圖座標轉客戶區;事件處理時將客戶區座標轉視圖座標。雙向一致,折射即被消解。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved