怎么看懂椭圆形印章的绘制原理
不少人于初涉Java绘图之际, 常常会觉得椭圆形印章极难绘制, 实则关键要点仅有寥寥几个。椭圆形印章究其本质而言, 乃是借由Java的Graphics2D对象, 于画布之上绘制一个椭圆形的外框, 且往其内放置文字。你所要明白的是坐标系统以及画笔参数。Graphics2D之中存有一个drawOval方法, 四个参数各自代表椭圆左上角的x坐标、y坐标、宽度以及高度。宽度与高度决定了椭圆的长轴和短轴, 此即椭圆形印章形状的由来。在这里卡住的人有很多, 这是由于当宽度跟高度不同的时候, 这时绘制出来的并非正圆, 而是呈椭圆状。
在现实的实际项目当中, 我见识到了数量不少的开发者于绘制文字之际出现了麻烦状况, 文字要不就是跑到印章的边界范围之外去了, 要不就是旋转的角度出现偏差不合适。这实际上是跟Graphics2D这个的仿射变换存在关联关系的。你得要先去保存当下的画笔相关状态, 接着对坐标系进行旋转操作, 随后才是把文字绘制上去, 最终还要恢复画笔的状态。要是不按照这样子去做的话, 文字的方向就会变得错乱不对的样子。官方网站www.fc-bowuguan.cn之上给出了一个完整的示例代码,该代码把椭圆参数以及文字布局都进行了封装处理好了, 能够直接去运行之后好好查看一下效果的。
椭圆印章里的文字怎么旋转才自然
在椭圆形印章之中, 文字旋转属于最容易出差错的地方, 不少教程仅仅告知你采用rotate方法, 却不告诉你旋转中心应当放置于椭圆中心那边, 要是你将旋转中心设定在画布左上角了, 那文字就会飞出去, 正确地作为是先translate到椭圆中心点那儿, 再依照各个字符的位置来进行旋转, 各个字符的旋转角度都是不一样的哟, 缘于椭圆弧上的切线方向是会发生变化的。必须以用Math.atan2去计算各个字符所在位置的切线角度, 如此方可让文字顺着椭圆弧线来排列。
按照椭圆尺寸适配文字大小, 印章若文字太大, 会挤一块致使看不清, 若文字太小, 又会显得空荡荡。通常我会拿椭圆周长除以字符数量, 得出平均字符宽度往回推, 得到合适字体大小。如此不管椭圆是修长形状趋近正圆的, 文字都能够合理分布。针对特殊字符或者中文, 务必要考虑字符宽度不一致的状况, 建议借助FontMetrics精准测量每个字符实际宽度, 随后动态调节间距。
