绘制多行文字时会用到DrawText函数或Graphics.DrawString方法,但它们都无法设置行距,也无法设置段落间距。下图是用DrawString方法绘制的两段文字,可以看到中文测试段落的行距非常小。
我们可以利用RTF格式来设置行距和段落间距,下图是测试结果:
C#源代码:
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private struct RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
}
private struct CHARRANGE
{
public int cpMin;
public int cpMax;
}
private struct FORMATRANGE
{
public IntPtr hDC;
public IntPtr hDCTarget;
public RECT rc;
public RECT rcPage;
public CHARRANGE chrg;
}
private struct PARAFORMAT2
{
public int cbSize;
public uint dwMask;
public short wNumbering;
public short wReserved;
public int dxStartIndent;
public int dxRightIndent;
public int dxOffset;
public short wAlignment;
public short cTabCount;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public int[] rgxTabs;
public int dySpaceBefore;
public int dySpaceAfter;
public int dyLineSpacing;
public short sStyle;
public byte bLineSpacingRule;
public byte bOutlineLevel;
public short wShadingWeight;
public short wShadingStyle;
pub