【问题标题】:I need help converting System.Window.Size to System.Window.Point我需要帮助将 System.Window.Size 转换为 System.Window.Point
【发布时间】:2014-06-26 19:50:01
【问题描述】:

我刚开始处理现有的 VB 项目,最终用户希望能够将 WPF 窗口作为整页打印到打印机。我在 C# 中找到了这个代码示例,它在 C# 中工作得很好

Printing WPF Window to Printer and Fit on a Page

但是,当我尝试将其转换为 VB 时,我遇到了两个错误

  1. System.Drawing.Size 无法转换为 System.Windows.Size
  2. System.Drawing.Point 无法转换为 System.Windows.Point

我有点知道 Drawing.Size 和 Windows.Size 的区别是基于这个(以及其他几个)SO 线程 What is the difference between System.Drawing.Point and System.Windows.Point? 但我不知道如何以我可以的方式修改我的翻译使转换在 VB 中发生,就像它在 C# 上的工作方式一样。错误出现在 Measure(sz) 和 Arrange(new Rect(.....) 行上。

我需要做什么才能完成这项工作?

Private Sub PrintWindow()
    Dim printDlg As PrintDialog = New PrintDialog()

    If printDlg.ShowDialog() = True Then

        Dim capabilities As System.Printing.PrintCapabilities =
            printDlg.PrintQueue.GetPrintCapabilities(printDlg.PrintTicket)

        Dim scale As Double = Math.Min(capabilities.PageImageableArea.ExtentWidth / ActualWidth,
                                       capabilities.PageImageableArea.ExtentHeight / ActualHeight)

        LayoutTransform = New ScaleTransform(scale, scale)

        Dim sz As New Size(CInt(capabilities.PageImageableArea.ExtentWidth),
                           CInt(capabilities.PageImageableArea.ExtentHeight))

        Measure(sz)

        Arrange(New Rect(New Point(CInt(capabilities.PageImageableArea.OriginWidth),
                                   CInt(capabilities.PageImageableArea.OriginHeight)), sz))

        printDlg.PrintVisual(Me, "First Fit to Page WPF Print")
    End If
End Sub

【问题讨论】:

    标签: wpf vb.net printing


    【解决方案1】:

    为什么不这样做呢?

        Dim sz As New System.Windows.Size(CInt(capabilities.PageImageableArea.ExtentWidth),
                           CInt(capabilities.PageImageableArea.ExtentHeight))
    
    
        Arrange(New Rect(New System.Windows.Point(CInt(capabilities.PageImageableArea.OriginWidth),
                                   CInt(capabilities.PageImageableArea.OriginHeight)), sz))
    

    【讨论】:

    • 这似乎解决了它,但我仍在努力了解最初的问题以及如何解决它。不管怎样,谢谢。你的建议让编译器很高兴。
    • Mesure 和 Arrange 方法需要不同的类型,System.Windows.Size 和 System.Drawing.Size 有什么不一样的就不明白了。
    猜你喜欢
    • 2018-11-24
    • 2019-12-23
    • 2021-11-06
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多