• 效果图100%

  • 效果图300%

  • 测试源码-RotateFontFrameAbstract
package taishan;import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.font.TextAttribute;
import java.awt.geom.AffineTransform;
import java.util.HashMap;@SuppressWarnings("serial")
public abstract class RotateFontFrameAbstract extends TFrame
{protected final static String FONT_NAME  = "宋体";protected final static int    FONT_SIZE  = 16;protected final static int    POS_OFFSET = 100;protected final static Color COLOR_LINE = Color.BLUE;protected final static Color COLOR_FONT = Color.BLACK;protected final static char[] TAISHAN = "泰山一!Office-!".toCharArray();protected final static AffineTransform ROTATE_0   = AffineTransform.getRotateInstance( 0);protected final static AffineTransform ROTATE_90  = AffineTransform.getRotateInstance( Math.PI / 2);protected final static AffineTransform ROTATE_180 = AffineTransform.getRotateInstance( Math.PI   );protected final static AffineTransform ROTATE_270 = AffineTransform.getRotateInstance( Math.PI *1.5);protected Font[] rotateFonts = new Font[4];protected abstract void drawRotateFonts(Graphics g);public RotateFontFrameAbstract(){this.getContentPane().setBackground(Color.WHITE);HashMap<TextAttribute, Object> attrs = new HashMap<TextAttribute, Object>();attrs.put(TextAttribute.FAMILY,         FONT_NAME);attrs.put(TextAttribute.SIZE,           FONT_SIZE);Font temp = new Font(attrs);rotateFonts[0] = temp.deriveFont(ROTATE_0);rotateFonts[1] = temp.deriveFont(ROTATE_90);rotateFonts[2] = temp.deriveFont(ROTATE_180);rotateFonts[3] = temp.deriveFont(ROTATE_270);}protected final void antiAliasing(Graphics2D g2d){g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,   RenderingHints.VALUE_TEXT_ANTIALIAS_ON);g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,   RenderingHints.VALUE_FRACTIONALMETRICS_ON);}@Overridepublic final void paint(Graphics g){super.paint(g);drawRotateFonts(g);}}
  • 测试源码-RotateFontFrameHorizental
package taishan;import java.awt.Graphics;@SuppressWarnings("serial")
public class RotateFontFrameHorizental extends RotateFontFrameAbstract
{@Overrideprotected void drawRotateFonts(Graphics g){antiAliasing((java.awt.Graphics2D)g);int xunit = 20;int yunit = 50;g.setColor(COLOR_LINE);g.drawLine(POS_OFFSET, POS_OFFSET, POS_OFFSET, POS_OFFSET+200);for (int i=0; i<rotateFonts.length; i++){if (rotateFonts[i] == null){continue;}int y = POS_OFFSET+yunit*i + 30;g.setColor(COLOR_LINE);g.drawLine(POS_OFFSET, y, POS_OFFSET+250, y);g.setFont(rotateFonts[i]);for (int j=0; j<TAISHAN.length; j++){int x = POS_OFFSET+xunit*j;g.setColor(COLOR_FONT);g.drawChars(TAISHAN, j, 1, x, y);             }}}public static void main(String[] args){RotateFontFrameHorizental frame = new RotateFontFrameHorizental();frame.setSize(600, 600);frame.setVisible(true);}}

OFFICE技术讲座:JDK绘制旋转字体的效果(水平)相关推荐

  1. 泰山OFFICE技术讲座:叶视图的边框效果确定

    研究WORD的叶边框,共有三种高度情形: 行高=背景=边框 这个效果理所当然.大家也都认同. 行高=背景=边框+1 这个是进位引进的. 行高=背景+1=边框+1 这个效果莫名其妙.当然也能够做出来(边 ...

  2. Flutter2.0 绘制旋转太空人+蛛网效果

    前言 最近华为手表的太空人表盘突然间火了,表盘上那个旋转的太空人呆萌可爱.奈何没有一款华为手表,作为一名合格的程序猿,当然要撸起袖子自己来画一个啦~ 鉴于最近Flutter推出了2.0稳定版本,除了对 ...

  3. 泰山OFFICE技术讲座:逻辑字号、中文字号、保存字号、布局字号、绘制字号

    字号有很多种,为了明确,这里专门定义: 逻辑字号(单位磅,Point) 就是用户看到的字号,也可以称之为用户字号.各位在编辑时看到的数字,如11.5.13等. 逻辑字号以0.5为步进. 中文字号 如五 ...

  4. 泰山OFFICE技术讲座:中英文间隔,间隔以哪个字体为准?

    https://quantum6.blog.csdn.net/article/details/128530514 重新研究了一下,结论是: 每个字符同时有中文字体和英文字体两种.其中,中文字体必须支持 ...

  5. MFC+GDI+绘制出雷达余晖效果

    MFC+GDI+绘制出雷达余晖效果 1.首先要画出静态的坐标轴,用双缓冲方法在onpain消息中绘制.绘制方法都比较简单.声明一个内存DC,绘制一个圆形,再把坐标轴画上去. void CDlg_Rad ...

  6. WPF中GDI+图形图像的绘制:(五)绘制图像——蒙板效果

    这里要实现的效果指的是对图片像素点区域进行颜色叠加,首先要做的是得到图片非透明部分的区域,效果如图: 实现步骤:1.在主窗体添加控制控件: <Label Grid.Row="4&quo ...

  7. 泰山OFFICE技术讲座:关于文字方向的几种实现思路

    WORD正文的文字方向,只有3种,文本框可有5种.这种区分并无必要.从技术上来说,有几种实现思路?实现方案还是很多的. 文字方向,实际上影响的是本页面的直接内容,比如文字.绕排.如果有表格,布局在顶部 ...

  8. [电子书]项目储备二:用FreeType2绘制矢量字体、多行文字

    [电子书]项目储备二:用FreeType2绘制矢量字体.多行文字 0 矢量字体 VS 点阵字体 1 FreeType2的介绍与基本使用 2 在LCD显示一个矢量字体,且可旋转 3 在LCD任意位置显示 ...

  9. 安卓学习笔记38:利用OpenGL ES绘制旋转立方体

    文章目录 零.学习目标 一.绘制图形基本步骤 二.绘制旋转立方体 (一)运行效果 (二)实现步骤 1.创建安卓应用[DrawRotatingCube] 2.建模:立方体类 - Cube 3.渲染:立方 ...

  10. HTML 5:绘制旋转的太极图

    2019独角兽企业重金招聘Python工程师标准>>> HTML: <!DOCTYPE><html><head><meta charset= ...

最新文章

  1. Redis 笔记(09)— 过期时间 expire(设置、查询、取消过期时间)
  2. 一. 对spring boot认识
  3. 单片机上电复位电路图大全
  4. java webservice用户验证_使用java webservice的.net4.0 web app需要Usernametoken身份验证
  5. 基于ArcEngine与C#的鹰眼地图实现
  6. Soft Skill
  7. javascript最新版本_JavaScript 引擎「V8」发布 8.0 版本,内存占用量大幅下降
  8. android异步任务更新进度条,Android的AsyncTask异步任务浅析
  9. Raphael的transform用法
  10. 电力拖动计算机控制系统讲什么,电力拖动自动控制系统
  11. 晓庄师范的3 4 计算机应用,2021全国应用心理学专业大学排名(5篇)
  12. 【Word】正则替换
  13. MyBatisCodeHelper-Pro2.8.2
  14. Linux-Socket实现模拟群聊(多人聊天室)
  15. 计算机组装与维护doc,新版计算机组装与维护.doc
  16. C++知识讲解(一)
  17. 全球重力场模型数据下载
  18. 嵌入式工程师面试知识总结
  19. Apache Impala: Impala的java开发
  20. linux ati显卡驱动下载,教你在Linux中安装ATI显卡驱动(图)

热门文章

  1. 题目241-字母统计
  2. 操作系统--系统引导程序
  3. 11.17牛客练习赛31 ABC-----未完
  4. 透明flash代码_Animate/FLASH如何制作纵深前进的动画
  5. java xppreader_Java對象轉換XML文件:XStream+XPP | 學步園
  6. 宽带认证客户端_cisco PPPOE 服务端与客户端 配置命令
  7. tp3.2 or 查询 (同字段)
  8. htop的VIRT是什么
  9. MyBatis插件开发:简单分页插件
  10. 用webpack打包加密静态配置文件