OFFICE技术讲座:JDK绘制旋转字体的效果(水平)
- 效果图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绘制旋转字体的效果(水平)相关推荐
- 泰山OFFICE技术讲座:叶视图的边框效果确定
研究WORD的叶边框,共有三种高度情形: 行高=背景=边框 这个效果理所当然.大家也都认同. 行高=背景=边框+1 这个是进位引进的. 行高=背景+1=边框+1 这个效果莫名其妙.当然也能够做出来(边 ...
- Flutter2.0 绘制旋转太空人+蛛网效果
前言 最近华为手表的太空人表盘突然间火了,表盘上那个旋转的太空人呆萌可爱.奈何没有一款华为手表,作为一名合格的程序猿,当然要撸起袖子自己来画一个啦~ 鉴于最近Flutter推出了2.0稳定版本,除了对 ...
- 泰山OFFICE技术讲座:逻辑字号、中文字号、保存字号、布局字号、绘制字号
字号有很多种,为了明确,这里专门定义: 逻辑字号(单位磅,Point) 就是用户看到的字号,也可以称之为用户字号.各位在编辑时看到的数字,如11.5.13等. 逻辑字号以0.5为步进. 中文字号 如五 ...
- 泰山OFFICE技术讲座:中英文间隔,间隔以哪个字体为准?
https://quantum6.blog.csdn.net/article/details/128530514 重新研究了一下,结论是: 每个字符同时有中文字体和英文字体两种.其中,中文字体必须支持 ...
- MFC+GDI+绘制出雷达余晖效果
MFC+GDI+绘制出雷达余晖效果 1.首先要画出静态的坐标轴,用双缓冲方法在onpain消息中绘制.绘制方法都比较简单.声明一个内存DC,绘制一个圆形,再把坐标轴画上去. void CDlg_Rad ...
- WPF中GDI+图形图像的绘制:(五)绘制图像——蒙板效果
这里要实现的效果指的是对图片像素点区域进行颜色叠加,首先要做的是得到图片非透明部分的区域,效果如图: 实现步骤:1.在主窗体添加控制控件: <Label Grid.Row="4&quo ...
- 泰山OFFICE技术讲座:关于文字方向的几种实现思路
WORD正文的文字方向,只有3种,文本框可有5种.这种区分并无必要.从技术上来说,有几种实现思路?实现方案还是很多的. 文字方向,实际上影响的是本页面的直接内容,比如文字.绕排.如果有表格,布局在顶部 ...
- [电子书]项目储备二:用FreeType2绘制矢量字体、多行文字
[电子书]项目储备二:用FreeType2绘制矢量字体.多行文字 0 矢量字体 VS 点阵字体 1 FreeType2的介绍与基本使用 2 在LCD显示一个矢量字体,且可旋转 3 在LCD任意位置显示 ...
- 安卓学习笔记38:利用OpenGL ES绘制旋转立方体
文章目录 零.学习目标 一.绘制图形基本步骤 二.绘制旋转立方体 (一)运行效果 (二)实现步骤 1.创建安卓应用[DrawRotatingCube] 2.建模:立方体类 - Cube 3.渲染:立方 ...
- HTML 5:绘制旋转的太极图
2019独角兽企业重金招聘Python工程师标准>>> HTML: <!DOCTYPE><html><head><meta charset= ...
最新文章
- Redis 笔记(09)— 过期时间 expire(设置、查询、取消过期时间)
- 一. 对spring boot认识
- 单片机上电复位电路图大全
- java webservice用户验证_使用java webservice的.net4.0 web app需要Usernametoken身份验证
- 基于ArcEngine与C#的鹰眼地图实现
- Soft Skill
- javascript最新版本_JavaScript 引擎「V8」发布 8.0 版本,内存占用量大幅下降
- android异步任务更新进度条,Android的AsyncTask异步任务浅析
- Raphael的transform用法
- 电力拖动计算机控制系统讲什么,电力拖动自动控制系统
- 晓庄师范的3 4 计算机应用,2021全国应用心理学专业大学排名(5篇)
- 【Word】正则替换
- MyBatisCodeHelper-Pro2.8.2
- Linux-Socket实现模拟群聊(多人聊天室)
- 计算机组装与维护doc,新版计算机组装与维护.doc
- C++知识讲解(一)
- 全球重力场模型数据下载
- 嵌入式工程师面试知识总结
- Apache Impala: Impala的java开发
- linux ati显卡驱动下载,教你在Linux中安装ATI显卡驱动(图)