以字型为例,一维表示的二维数组矩阵,旋转90、-90
参考的代码有:
https://blog.csdn.net/quantum7/article/details/79762714
https://blog.csdn.net/quantum7/article/details/107279477
具体代码:
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>#include <ft2build.h>
#include <freetype/freetype.h>
#include FT_FREETYPE_H#define FONT_FILE "/home/uos/font/simsun.ttc"static void dumpBuffer(char* pBuffer, int w, int h)
{int i=0;int j=0;printf("w=%d, h=%d\n", w, h);for (i=0; i<h; i++){printf("|");for (j=0; j<w; j++){printf(((pBuffer[i * w + j]) == 0 ) ? " " : "1");}printf("|\n");}
}static void dumpFontBmp(FT_Bitmap* pBmp)
{int w = pBmp->width;int h = pBmp->rows;dumpBuffer(pBmp->buffer, w, h);
}static void rotate_90(FT_Bitmap* pBmp)
{int w = pBmp->width;int h = pBmp->rows;int i=0;char* pRotated;int size;int offset=0;size = w * h;pRotated = (char*)malloc(size);memcpy(pRotated, pBmp->buffer, size);int startPos = (h - 1)*w;i = 0;for (int x = 0; x < w; x++){int offset = startPos;for (int y = h - 1; y >= 0; y--){pRotated[i] = pBmp->buffer[offset + x];i++;offset -= w;}}dumpBuffer(pRotated, h, w);
}static void rotate_270(FT_Bitmap* pBmp)
{int w = pBmp->width;int h = pBmp->rows;int i=0;char* pRotated;int size;int offset=0;size = w * h;pRotated = (char*)malloc(size);memcpy(pRotated, pBmp->buffer, size);i = 0;for (int x = w-1; x >= 0; x--){int offset = 0;for (int y = 0; y < h; y++){pRotated[i] = pBmp->buffer[offset + x];i++;offset += w;}}dumpBuffer(pRotated, h, w);
}int main()
{FT_Library m_pFTLib;FT_Face m_pFTFace;wchar_t chinese_char = L'泰';FT_Error result = FT_Init_FreeType(&m_pFTLib);if(FT_New_Face(m_pFTLib, FONT_FILE, 0, &m_pFTFace)){printf("FT_New_Face error!\n");return -1;}//FT_ENCODING_GB2312, FT_ENCODING_UNICODEFT_Select_Charmap(m_pFTFace, FT_ENCODING_UNICODE);FT_Set_Char_Size(m_pFTFace, 0, 12<<6, 200, 200);result = FT_Load_Glyph(m_pFTFace, FT_Get_Char_Index(m_pFTFace, chinese_char), FT_LOAD_DEFAULT);// 第二个参数为渲染模式result = FT_Render_Glyph(m_pFTFace->glyph, FT_RENDER_MODE_NORMAL); printf("result=%d\n", result);dumpFontBmp(&(m_pFTFace->glyph->bitmap));rotate_90( &(m_pFTFace->glyph->bitmap));rotate_270(&(m_pFTFace->glyph->bitmap));return 0;
}
原始字体:
| 111 |
| 1111 |
| 111 11 |
| 111 1111 |
| 111111111111111111111111111 |
| 11111 111 |
| 111 11 |
| 111 1111 |
| 11111111111111111111111 |
| 1111 111 |
| 111 1 |
| 111 1111 |
|111111111111111111111111111111 |
| 1111 1111 11 |
| 111 11 111 |
| 1111 1111 111 |
| 1111 1111 111 |
| 1111 111 1111 |
| 1111 111 111111 |
| 1111111 111 111111111 |
| 1111 111111111111111111111 |
| 1111 111111111 1111111|
| 1111 11 1111 1111 |
|111 111111111 11 |
|1 11111111111111 |
| 111111 111 111111 |
| 11111 111 11111 |
| 1111 1111111 111 |
| 11 111111 11 |
| 111 |
旋转90度:
| 11 1 |
| 11 11 |
| 111 11 11 |
| 111 11 11 |
| 11 111 11 1 11 |
| 1111 111 1 11 11 |
| 1111 1111 1 11 11 |
| 111 1111 1 11 1 |
| 111 11111 1 11 1 |
| 1 11 111111111 1 1 |
| 11 1111111 111111 1 1 |
| 11 111111 11111111 1 |
|111 11 11 11111111111 |
|1111111111111111 1 11111111111|
|1111111111111111 1 111111111|
| 11111111111111 1 1 1 111|
| 11111 11 1 1 1 1 |
| 11 11 1 1 1 |
| 111 111 111 1 1 |
| 111 111 1111 1 1 |
| 111 1111111 1 1 1 |
| 1111 111111 1 1 1 |
| 1111 11111 1 11 1 |
| 1111 1111 1 111 1 |
| 1111 1 111 11 |
| 111 11 11 111 |
| 1111 11 1 111 |
| 1111 111 11 |
| 1111 11 1 |
| 111 1 |
| 1 |
旋转-90:
| 1 |
| 1 111 |
| 1 11 1111 |
| 11 111 1111 |
| 111 1 11 1111 |
| 111 11 11 111 |
| 11 111 1 1111 |
| 1 111 1 1111 1111 |
| 1 11 1 11111 1111 |
| 1 1 1 111111 1111 |
| 1 1 1 1111111 111 |
| 1 1 1111 111 111 |
| 1 1 111 111 111 |
| 1 1 1 11 11 |
| 1 1 1 1 11 11111 |
|111 1 1 1 11111111111111 |
|111111111 1 1111111111111111|
|11111111111 1 1111111111111111|
| 11111111111 11 11 111|
| 1 11111111 111111 11 |
| 1 1 111111 1111111 11 |
| 1 1 111111111 11 1 |
| 1 11 1 11111 111 |
| 1 11 1 1111 111 |
| 11 11 1 1111 1111 |
| 11 11 1 111 1111 |
| 11 1 11 111 11 |
| 11 11 111 |
| 11 11 111 |
| 11 11 |
| 1 11 |
以字型为例,一维表示的二维数组矩阵,旋转90、-90相关推荐
- 让一维指针指向二维数组空间的方法!
背景:int *p;int a[10][10];如何让一维指针p指向a[10][10]开辟的内存空间? 正确的方法: 1.开始我用的笨方法是另外开辟一个内存空间int*p=new int [100]; ...
- oracle 一维数转二维数组,js将一维数组转化为二维数组
遇到的问题: 后端返回的是一组一维数组,但是需要展示的格式是二维数组,常见的场景举例:后台返回10个长度的数组,需要分成3个一组展示在banner上. 例:[1,2,3,4,5,6,7,8,9,10] ...
- 【千字过程分析】剑指 Offer 04. 二维数组中的查找
立志用最少的代码做最高效的表达 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数 ...
- 一维数组和二维数组矩阵乘法
#include <iostream> using namespace std; int c[3][2]={0}; int d[6]={0}; //二维数组存储矩阵乘法 void mult ...
- mysql二维数据转一维存_二维数组转一维数组
//二维转一维 var arr=[ [1,2,3], [2,5,6,7], [234,234,545] ] function dir(arr) { var result=[]; for(var r=0 ...
- Java 中的一维数组以及二维数组(8千字零基础超全详解)
文章目录 前言 一.一维数组 1. 数组的初始化 1.1 动态初始化一 1.2 动态初始化二 1.3 静态初始化 2. 数组使用的注意事项和细节 3. 经典例题 4. 数组赋值机制(重难点!) 5. ...
- C语言 一维数组叠加为二维数组样例
这里参看memcpy的用法,将一个一维整型数组不停的叠加为二维数组 使用宏定义来控制二维数组的行列 代码如下: #include <stdio.h> #include <stdlib ...
- JAVA中一维数组的作用,JAVA中一维数组和二维数组的定义
在java中数组被看成是一个对象 在定义数组时,有两种定义方法:int[] a 和int a[]:第二种是C/C++对数组定义方式,对于JAVA建议采用第一种定义方式. 总的原则:任何对象在被调用之前 ...
- 二维数组,锯齿数组和集合 C# 一维数组、二维数组(矩形数组)、交错数组(锯齿数组)的使用 C# 数组、多维数组(矩形数组)、锯齿数组(交叉数组)...
二维数组,锯齿数组和集合 一.二维数组 二维数组: 一维数组----豆角 二维数组----表格 定义: 1.一维数组: 数据类型[] 数组变量名 = new 数据类型[数组长度]; 数据类型[] 数组 ...
- 【C语言】数组的基本知识详细讲解(一维数组、二维数组、越界、存储.....
接着上次的操作符的详解,让我们来简单了解C语言里的数组. 目录 一维数组的创建和初始化 一维数组的使用 一维数组的存储 二维数组的创建与初始化 二维数组的存储 数组的越界 总结 一维数组的创建和初始化 ...
最新文章
- python好学吗 老程序员-想自学程序员,朋友推荐了python,靠谱吗?
- 几种字符串加密解密的方法
- python:继承日志模块生成自定义日志
- 正义联盟的Spring靴
- 基准风险因子暴露度_具有性能基准SQL Server索引填充因子
- C语言判断逆反素数,判断素数的几种方法思考[C语言]
- 王晓耕老师-风险管理专家
- progress进度条滚动动画
- 泰康和百度智能云为何相互需要?
- Realtime Multi-Person 2D Pose Estimation Using Part Affinity Fields【菜鸟读者】
- 富文本编辑器(超简单的)
- poj3253切割木板(哈夫曼树) 贪心【优先队列】
- 这50款必看医疗APP 或许就是下一个风口 (上)
- dlp型3d打印机_DLP3D打印机的工作原理及优势
- python红楼梦人物词频统计_通过数据挖掘能分析《红楼梦》各回的真伪吗?
- 1969年图灵奖--马文·明斯基生平
- 企业微信单点登陆流程
- SQL语句汇总(终篇)—— 表联接与联接查询
- 程序员团队名称和口号_第四季度团队口号励志标语大全
- 插件 - 收藏集 - 掘金
热门文章
- 计算机第四次评估报告,建议置顶,天天那么多问计算机的。看看第四轮评估的结果。...
- fastjson 序列化 不包括转义字符_fastjson漏洞复现
- xgboost算法_Xgboost调参小结
- java初始堆建议值_Java堆初始大小的建议值
- linux c语言播放midi,C语言实现--计算MIDI音符的频率
- golang ide 环境搭建_golang环境搭建
- hololens与混合现实开发pdf_增强现实与虚拟现实:过去和未来
- ajax php断点调试,关于javascript:如何在jquery ajax调用期间调试php
- mysql show profiles 使用分析sql 性能
- ASP.NET与MVC架构区别总结