将图像位置设置为页面中心

Set image position to page center

我想在页面中央打印一张图片,但我想不出任何主意。

System.Windows.Point printLocation = new System.Windows.Point(50,50);
printLocation.X = pageWidth - 50 / 2; 50 is the margin
imageViewer = ImagePrintAdapter.CreateImageFromBitmapImage(img,printLocation);
printerDialog.PrintVisual(imageViewer, "Identification");

这是CreateImageFromBitmapImage方法

public static System.Windows.Controls.Image CreateImageFromBitmapImage(BitmapImage imgSource, System.Windows.Point imgLocation)
 {
   System.Windows.Controls.Image imageViewer = new System.Windows.Controls.Image();
   imageViewer.BeginInit();
   imageViewer.Source = imgSource;

   imageViewer.Measure(new System.Windows.Size(double.PositiveInfinity, double.PositiveInfinity));
   imageViewer.Arrange(new System.Windows.Rect(imgLocation, imageViewer.DesiredSize));

   imageViewer.EndInit();
   imageViewer.UpdateLayout();

   return imageViewer;
}

如果我将 printLocation.X 设置为 pageWidth 的一半,它不应该从中心开始吗?

您可以简单地将图像绘制到 DrawingVisual 中并打印出来。以下简化示例假定位图大小小于可打印区域大小:

ImageSource image = ...

var rect = new Rect(
    (printDialog.PrintableAreaWidth - image.Width) / 2,
    (printDialog.PrintableAreaHeight - image.Height) / 2,
    image.Width, image.Height);

var visual = new DrawingVisual();
using (var dc = visual.RenderOpen())
{
    dc.DrawImage(bitmap, rect);
}

printDialog.PrintVisual(visual, "");

请注意,您也可以使用任何其他尺寸的矩形,即相应地缩放打印图像。