主要代码如下:

StringFormat fmt = new StringFormat();
fmt.LineAlignment = StringAlignment.Near;//左对齐
fmt.FormatFlags = StringFormatFlags.LineLimit;//自动换行 //设定文本打印区域 b是左上角坐标,Size是打印区域(矩形) float mmtopt = 2.835f; 单位换算,毫米*2.835=Point单位
Rectangle r = new Rectangle(b, new Size(Convert.ToInt32( * mmtopt), Convert.ToInt32( * mmtopt))); g.DrawString(tb.Text, titleFont, new SolidBrush(Color.Black), r, fmt);

主要原理就是先定义文本绘图格式为自动换行,之后再制定文本绘图区域为矩形而不仅仅是左上角坐标点。


下面是我做的一个自动套印固定表格的软件的相关代码:

if (tb.Text.Trim().Length < )//标题
{
g.DrawString(tb.Text, textFont, new SolidBrush(Color.Black), b);
}
else
{
StringFormat fmt = new StringFormat();
fmt.LineAlignment = StringAlignment.Near;//左对齐
fmt.FormatFlags = StringFormatFlags.LineLimit;//自动换行 //设定文本打印区域 b是左上角坐标,Size是打印区域(矩形) float mmtopt = 2.835f;
Rectangle r = new Rectangle(b, new Size(Convert.ToInt32( * mmtopt), Convert.ToInt32( * mmtopt)));
r.Y = r.Y - Convert.ToInt32( * mmtopt); Font titleFont = new Font(new FontFamily("仿宋"), , GraphicsUnit.Point);
g.DrawString(tb.Text, titleFont, new SolidBrush(Color.Black), r, fmt);
}

功能就是如果少于28子,使用默认字体打印内容,如果字数过多,则缩小字体,稍微向上修改下打印坐标,自动换行打印。

还是会出现之要一行但是用小字体的情况,但是只要缩小字体这个情况就不可能避免。

C# 打印 长字符串自动换行的更多相关文章

  1. cocos2dx Mac平台 打印长字符串,游戏卡死

    1,打开了输出控制台,输出卡死的解决方案: 打开控制台: game -console enable 关闭控制台: game -console false 修改文件 ConsoleWindowContr ...

  2. html表单样式, table隔行高亮, 长字符串自动换行

    2016年1月14日 11:16:54 星期四 效果图: html: <!DOCTYPE html> <html lang="en"> <head&g ...

  3. python-原始字符串,长字符串

    一  长字符串 在python中要表示跨行多行的字符串,可以使用较为简单粗暴的表达-----三引号.例如: str = ”’那时我们有梦, 关于文学, 关于爱情, 关于穿越世界的旅行. 如今我们深夜饮 ...

  4. TSQL:判断某较短字符串在较长字符串中出现的次数。

    给定一个较短字符串shortStr='ab',和一个较长字符串longStr='adkdabkwelabwkereabrsdweo2342ablk234lksdfsdf1abe': 判断shortSt ...

  5. Python基础语法——(引号、字符串、长字符串、原始字符串、Unicode)

    一.单引号字符串和转义引号 当字符串中出现单引号'时,我们可以用双引号""将该字符串引起来:"Let's go!" 而当字符串中出现双引号时,我们可以用单引号' ...

  6. 使用List把一个长字符串分解成若干个短字符串

    把一个长字符串分解成若干个固定长度的短字符串,由于事先不知道长字符串的长度,以及短字符串的数量,只能使用List. public static void get_list_sbody(String s ...

  7. eclipse处理长字符串拼接快捷方法类

    情景: 你在后台写sql文访问数据库时是不是要这样写 String sql="select a," +"b," +"c " +"f ...

  8. JSP-简单的练习省略显示长字符串

    <%@ page contentType="text/html; charset=gb2312" %> <!-- JSP指令标签 --> <%@ pa ...

  9. Java & PHP & Javascript 通用 RSA 加密 解密 (长字符串)

    系统与系统的数据交互中,有些敏感数据是不能直接明文传输的,所以在发送数据之前要进行加密,在接收到数据时进行解密处理:然而由于系统与系统之间的开发语言不同. 本次需求是生成二维码是通过java生成,由p ...

随机推荐

  1. Verilog手绘FVH信号

    Verilog手绘FVH信号 `timescale 1ns / 1ps //////////////////////////////////////////////////////////////// ...

  2. HttpClient 上传图片

    Image image = Image.FromFile(@"F:\image2\DSC02028.JPG"); var data = ImageToByteArray(image ...

  3. office 32-bit components 2010 的卸载

    卸载方法:MsiExec.exe /X {90140000-0043-0000-1000-0000000FF1CE}

  4. WEB 性能优化导图

    看了一下网上对于web性能优化的一些帖子,不是很直观,花了点时间画了一个思维导图. refers: https://segmentfault.com/a/1190000011936772 https: ...

  5. 为什么HTML中的多个空格或是回车在浏览器上只能显示出一个?

    我们在学习HTML的时候可能书本或是老师会告诉我们一件事,就是在HTML中不管我们在两个文本之间加上多少连续的空格或是回车,到了浏览器里面只能显示出一个来.但是我们从来不知道为什么. 原因很简单,因为 ...

  6. python文件管理小计

    1.读取只当路径下所有文件和文件夹 import os def file_name(file_dir): for root, dirs, files in os.walk(file_dir): pri ...

  7. Mysql在sql中截取时间类型字段的年月日

    //显示年月日 select date_format(date ,'%Y-%m-%d' ) from talbe_a //根据年月日分组 select date_format(date ,'%Y-%m ...

  8. 转载:MySQL看这一篇就够了

    No.1 数据库概念 什么是数据库? 数据库就是一种特殊的文件,内部存储着需要的数据 RDBMS 所谓关系数据库,是建立在关系模型基础的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据 SQ ...

  9. axure8.0激活

    Licensee:米 业成 (STUDENT)Key:nFmqBBvEqdvbiUjy8NZiyWiRSg3yO+PtZ8c9wdwxWse4WprphvSu9sohAdpNnJK5

  10. axios与vue的配合使用事例,实现缓存和重复加载的控制

    import Vue from "vue"; import qs from "qs"; import Store from "../vuex/stor ...