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

C# Visio 二次開發:圖面列印實現(二)——頁邊距單位轉換陷阱與最終成果

     編輯:關於C語言

PageSetupDialog 頁邊距單位 Bug

對話框預設單位為 ThousandthsOfAnInch (千分之一吋),確認後自動轉為 HundredthsOfAMillimeter (百分之一毫米),再開啟又縮小,導致數值遞減失真。

解決方案:PrinterUnitConvert 雙向轉換


PageSetupDialog dlg = new PageSetupDialog();
dlg.Document = PrintDocument;

// 顯示前:轉為毫米單位供對話框顯示
dlg.PageSettings.Margins = PrinterUnitConvert.Convert(
    dlg.PageSettings.Margins,
    PrinterUnit.ThousandthsOfAnInch,
    PrinterUnit.HundredthsOfAMillimeter);

if (dlg.ShowDialog() == DialogResult.OK)
{
    // 使用者確認,dlg.PageSettings.Margins 已為正確值
}
else
{
    // 取消:還原原單位避免污染 Document 設定
    dlg.PageSettings.Margins = PrinterUnitConvert.Convert(
        dlg.PageSettings.Margins,
        PrinterUnit.HundredthsOfAMillimeter,
        PrinterUnit.ThousandthsOfAnInch);
}

對話框截圖

頁面設定對話框

最終列印功能展示

列印預覽與輸出效果

—

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