博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文字纵向打印
阅读量:5342 次
发布时间:2019-06-15

本文共 2053 字,大约阅读时间需要 6 分钟。

一之半解,以为PageSetting能解决横纵向的问题

printdocument.DefaultPageSettings.Landscape = true;//横向printdocument.DefaultPageSettings.Landscape = false;//纵向

其实这只是一个进纸方向,相当于尺寸变了,A4纵向尺寸是210*297,横向尺寸是297*210。当然如果真希望这样的话,上面的代码似乎是无效的,需要在一个事件里设置

printdocument.QueryPageSettings += new QueryPageSettingsEventHandler(printdocument_QueryPageSettings);

事件里设置为横向

void printdocument_QueryPageSettings(object sender, QueryPageSettingsEventArgs e){    e.PageSettings.Landscape = true;//横向}

好了,只好在打印的方法想办法了。

方法一:通过DrawString指定字符排列方式

private void printdocument_printpage(object sender, System.Drawing.Printing.PrintPageEventArgs e){       System.Drawing.Font drawFont = new System.Drawing.Font("宋体", 16);    System.Drawing.SolidBrush drawBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black);    float tx = 50.0f;    float ty = 125.0f;     System.Drawing.StringFormat drawFormat = new System.Drawing.StringFormat(StringFormatFlags.DirectionVertical);    e.Graphics.DrawString("Go to see movie,very good move!", drawFont, drawBrush, tx, ty, drawFormat);    e.Graphics.DrawString("大家一起来看电影,电影好好看呀!", drawFont, drawBrush, tx + 30, ty, drawFormat);    return;}

我打印了一行中文,一行英文,打印的效果如下图

 

我希望中文也象英文一样,只好使用下面的方法。

方法二:翻转

private void printdocument_printpage(object sender, System.Drawing.Printing.PrintPageEventArgs e){               System.Drawing.Font drawFont = new System.Drawing.Font("宋体", 16);    System.Drawing.SolidBrush drawBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black);    float tx = 50.0f;    float ty = 125.0f;      e.Graphics.RotateTransform(270);    tx = -350.0f;    ty = 125.0f;    e.Graphics.DrawString("Go to see movie,very good move!", drawFont, drawBrush, tx, ty);    e.Graphics.DrawString("大家一起来看电影,电影好好看呀!", drawFont, drawBrush, tx, ty+30);    for (int i = 0; i < 15; i++)    {        float curX = -400 + i * 50;        e.Graphics.DrawString(curX.ToString(), drawFont, drawBrush, curX, 20);    }    return;}

为了更好理解翻转后的坐标系,我加入了15次的X的坐标位置的打印,效果如下:

至于为什么翻转270度,大家可以试试修改度数为1打印一次,再改为45再打印一次。心里就明亮了。

 

 

转载于:https://www.cnblogs.com/kevin-Y/p/3699395.html

你可能感兴趣的文章
Android LinearLayout 的几个属性
查看>>
strcpy函数里的小九九
查看>>
搭建ssm过程中遇到的问题集
查看>>
OpenLayers绘制图形
查看>>
tp5集合h5 wap和公众号支付
查看>>
Flutter学习笔记(一)
查看>>
iOS10 国行iPhone联网权限问题处理
查看>>
洛谷 P1991 无线通讯网
查看>>
[HIHO1184]连通性二·边的双连通分量(双连通分量)
查看>>
Codeforces Round #178 (Div. 2) B. Shaass and Bookshelf 【动态规划】0-1背包
查看>>
SparkStreaming 源码分析
查看>>
【算法】—— 随机音乐的播放算法
查看>>
mysql asyn 示例
查看>>
DataGrid 点击 获取 行 ID
查看>>
git 使用
查看>>
边框圆角方法
查看>>
asp.net WebApi自定义权限验证消息返回
查看>>
php中eval函数的危害与正确禁用方法
查看>>
20172315 2017-2018-2 《程序设计与数据结构》第十一周学习总结
查看>>
MySQL添加、修改、撤销用户数据库操作权限的一些记录
查看>>