注册
登录
会员
标签
统计
帮助
WPF技术网
»
桌面应用程序
» WPF 打印编程|WPF深入研究 之 Print 打印
‹‹ 上一主题
|
下一主题 ››
发新话题
发布投票
发布商品
发布悬赏
发布活动
发布辩论
发布视频
打印
WPF 打印编程|WPF深入研究 之 Print 打印
菲菲
新手上路
个人空间
发短消息
加为好友
当前离线
1
#
大
中
小
发表于 2008-6-30 17:12
只看该作者
WPF 打印编程|WPF深入研究 之 Print 打印
本章共计51个示例,全都在VS2008下.NET3.5测试通过,点击这里下载:
Printing.rar
1
.
PrintDialog
This sample illustrates how to create an instance of a simple PrintDialog and then display it. The sample uses both Extensible Application Markup Language (XAML) and procedural code.
这个示例演示了如何进行一个最简单的打印工作,为此需要引入两个
dll
:
ReachFramework.dll
和
System.Printing
。
InvokePrint
方法只是显示了一个
PrintDialog
打印框,并未进行打印工作:
PrintDialog pDialog
=
new
PrintDialog();
pDialog.PageRangeSelection
=
PageRangeSelection.AllPages;
pDialog.UserPageRangeEnabled
=
true
;
pDialog.ShowDialog();
有
PrintableAreaHeight
和
PrintableAreaWidth
两个属性,分别用来表示可打印区域的高和宽。
而对
PrintDialog
的设置,可以保存在
PrintTicket
中,下次再打开
PrintDialog
,就不必重复进行设置了。
PrintDialog pDialog
=
new
PrintDialog();
PrintTicket pt
=
pDialog.PrintTicket;
同样,选择使用哪一台打印机的设置,存放在
PrintQueue
中,下次再打开
PrintDialog
,也不用再次设置了。
PrintDialog pDialog
=
new
PrintDialog();
PrintQueue pq
=
pDialog.PrintQueue;
如果要把特定的内容打印输出,则需要调用
PrintDialog
的
PrintVisual
方法:
if
((
bool
)pDialog.ShowDialog().GetValueOrDefault())
{
DrawingVisual vis
=
new
DrawingVisual();
DrawingContext dc
=
vis.RenderOpen();
dc.DrawLine(
new
Pen(),
new
Point(
0
,
0
),
new
Point(
0
,
1
));
dc.Close();
pDialog.PrintVisual(vis,
"
Hello, world!
"
);
}
我们能打印的,都是
Visual
类型的对象,其中
UIElement
派生于
Visual
,从而我们可以打印所有
Panel
、控件和其它元素,最一般的方法是使用派生于
Visual
的
DrawingVisual
类,利用它的
RenderOpen
方法生成
DrawingContext
对象,为其绘制图形,最后使用
PrintDialog
的
PrintVisual
方法,输出图形和文字。
注意到,
pDialog.ShowDialog()
返回的是可空类型
?bool
,为此需要使用
GetValueOrDefault
将其转为
bool
值,对于
null
值也会转为
false
。
2
.
EnumerateSubsetOfPrintQueues
EnumerateSubsetOfPrintQueues
shows how to use the EnumeratedPrintQueueTypes enumeration to get a subset of available print queues.
这个程序演示了如何得到本地和共享的所有打印机列表。为此,需要使用到
EnumeratedPrintQueueTypes
枚举中的
Local
和
Shared
两个值,组合成一个数组,
EnumeratedPrintQueueTypes[] enumerationFlags
=
{EnumeratedPrintQueueTypes.Local,
EnumeratedPrintQueueTypes.Shared}
;
作为参数传递到查询方法
GetPrintQueues
中:
LocalPrintServer printServer
=
new
LocalPrintServer();
PrintQueueCollection printQueuesOnLocalServer
=
printServer.GetPrintQueues(enumerationFlags);
接着就可以对
PrintQueueCollection
进行遍历了,获取每一个的
PrintQueue
名称和所在位置:
foreach
(PrintQueue printer
in
printQueuesOnLocalServer)
{
Console.WriteLine(
""
tThe shared printer
"
+ printer.Name +
"
is
located at
"
+ printer.Location +
""
n
"
);
}
UID
613
帖子
6
精华
0
积分
0
阅读权限
10
在线时间
2 小时
注册时间
2008-6-27
最后登录
2008-7-1
查看详细资料
TOP
tywx
新手上路
个人空间
发短消息
加为好友
当前离线
2
#
大
中
小
发表于 2008-7-2 13:29
只看该作者
怎么调用报表文件呢?如无缝的调用RDLC!并且要预览呢!
有其他更好的设计报表的方式吗
UID
620
帖子
1
精华
0
积分
0
阅读权限
10
在线时间
1 小时
注册时间
2008-6-30
最后登录
2008-7-4
查看详细资料
TOP
‹‹ 上一主题
|
下一主题 ››
控制面板首页
编辑个人资料
积分记录
公众用户组
个人空间管理
基本概况
版块排行
主题排行
发帖排行
积分排行
交易排行
在线时间
管理团队
本站与当当网合作推出买书返现活动
1.必须通过点击本链接进入当当网购物
2.成功购物后将订单号以及您的收款信息以站内短消息发送给wpf管理员
3.管理员将支付给您返现
比如您通过我站链接花100元在当当网买后,我站将支付您10元的返现