【发布时间】:2014-08-28 10:28:31
【问题描述】:
我正在使用 bing maps sdk 编写一个小的 wpf 应用程序。
我正在从我的地图生成位图,我希望能够在 A4 纸上打印这张地图。
我尝试了几种方法,但我的照片总是纵向打印。
这是我使用的代码:
MemoryStream ms = new MemoryStream();
myImage.Save(ms,myImage.RawFormat);
ms.Seek(0, SeekOrigin.Begin);
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.CacheOption = BitmapCacheOption.OnLoad;
bi.StreamSource = ms;
bi.EndInit();
var vis = new DrawingVisual();
var dc = vis.RenderOpen();
dc.DrawImage(bi, new Rect { Width = bi.Width, Height = bi.Height });
RotateTransform rotateTransform = new RotateTransform(90);
dc.PushTransform(rotateTransform);
dc.Close();
var pdialog = new PrintDialog();
pdialog.PrintTicket.PageOrientation = PageOrientation.Landscape;
if (pdialog.ShowDialog() == true)
{
pdialog.PrintTicket.PageOrientation = PageOrientation.Landscape;
pdialog.PrintVisual(vis, "My Image");
}
注意:myImage 是我的位图文件。 注意:我添加了 90° 变换,但没有效果。
有人有什么想法吗?
非常感谢:)
【问题讨论】:
-
测试了您的代码,它按预期工作,没有 RotateTransform(无论如何都无效)并且没有设置两次方向。另请注意,建议在 using statement 中创建 IDisposable 对象,例如
using (var dc = vis.RenderOpen()) { ... }。然后您不必明确关闭/处置它们。 -
所以,我可能是用 Microsoft XPS 打印机虚拟打印的...我会尝试使用 pdf 打印机。
-
@WalterFabioSimoni 关于解决方案的任何消息?
标签: c# wpf image printing bitmap