tôi đã tìm kiếm các tùy chọn cách in các điều khiển WPF và tìm thấy một số giải pháp. Tôi cần phải phù hợp với điều khiển in của tôi để in trang trong khi vẫn giữ được khẩu phần (điều khiển của tôi là hình vuông; lưới sudoku).In WPF để vừa với trang
Tôi đã tìm thấy giải pháp thay đổi kích thước và đặt lại vị trí kiểm soát để vừa với trang. Điều đó hoạt động tốt, nhưng nó cũng đặt lại vị trí kiểm soát trên cửa sổ của tôi.
đây là đoạn code tôi sử dụng cho in ấn và mở rộng quy mô:
//get selected printer capabilities
System.Printing.PrintCapabilities capabilities = dialog.PrintQueue.GetPrintCapabilities(dialog.PrintTicket);
//get scale of the print wrt to screen of WPF visual
double scale = Math.Min(capabilities.PageImageableArea.ExtentWidth/mrizka.ActualWidth, capabilities.PageImageableArea.ExtentHeight/mrizka.ActualHeight);
//Transform the Visual to scale
mrizka.LayoutTransform = new ScaleTransform(scale, scale);
//get the size of the printer page
Size sz = new Size(capabilities.PageImageableArea.ExtentWidth, capabilities.PageImageableArea.ExtentHeight);
//update the layout of the visual to the printer page size.
mrizka.Measure(sz);
mrizka.Arrange(new Rect(new Point(capabilities.PageImageableArea.OriginWidth, capabilities.PageImageableArea.OriginHeight), sz));
dialog.PrintVisual(mrizka, mrizka.getID().ToString());
Tôi đã thử hai aproaches để giải quyết này:
Clone kiểm soát của tôi và sau đó biến đổi nhân bản một, unaffecting gốc. Không hoạt động, vì một lý do nào đó tôi đã kết thúc với ngoại lệ: DependencyObject được cung cấp không phải là ngữ cảnh cho Freezable này, nhưng chỉ trong một số trường hợp.
Hoàn nguyên kích thước và thay đổi vị trí. Tôi đã thử gọi phương thức InvalidateArrange(), có vẻ như hoạt động, nhưng chỉ trong lần gọi đầu tiên của phương thức in. Trong cuộc gọi thứ hai, nó không hoạt động.
Tôi nên làm gì, bất kỳ ý tưởng nào < cảm ơn bạn.
Bạn sẽ cần thêm tham chiếu vào System.Printing và ReachFramework. – StillLearnin
Nó cũng có vẻ để tham khảo System.Windows.Media và System.Windows.Controls – Jeff
Điều này không đúng cho tôi, LayoutTransform dường như bị bỏ qua bất kể loại Transform tôi ném vào nó. – Lennart