PCB Genesis增加点阵字 实现原理
我们采用Genesis增加点阵字时,用Genesis增加Canned Text即可,但奥宝中文不支持,且字符种类是有限的呀
不过没关系,没有自己造呀。在这里我分享一种增加点阵字的实现方法
一.通过代码增加点阵字效果

二.实现代码
private void button1_Click(object sender, EventArgs e)
{
add Add = new add();
Font font = new Font("宋体", );
Add.text_dot(font, "pcbren共赢加油"); }
/// <summary>
/// 增加点阵字
/// </summary>
/// <param name="font"></param>
/// <param name="text"></param>
/// <param name="x"></param>
/// <param name="y"></param>
/// <param name="symbols_size"></param>
/// <param name="symbol"></param>
/// <param name="scale"></param>
public void text_dot(Font font, string text = "pcbren", double x = , double y = , double symbols_size = , string symbol = "r", double scale = )
{ y += ;
int txt_space = ;
double txt_sum = ;
foreach (char strt in text)
{
if (strt >= 0x4e00 && strt <= 0x9fbb)
txt_space = ;
else
txt_space = ;
bool[,] data = calc.text_dot_array(font, strt.ToString());
for (int i = ; i <= data.GetLength() - ; i++)
{
for (int j = ; j <= data.GetLength() - ; j++)
{
if (data[i, j])
{
pad(i * scale + txt_sum, y * scale - j * scale, symbols_size, symbol);
}
}
}
txt_sum += txt_space * scale;
}
}
/// <summary>
/// 计算文字点阵列
/// </summary>
/// <param name="font"></param>
/// <param name="text"></param>
/// <returns></returns>
public static bool[,] text_dot_array(Font font, string text = "pcbren")
{
int array_count = 20;
bool[,] data = new bool[array_count, array_count];
Bitmap bmp = new Bitmap(array_count, array_count);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.White);
g.DrawString(text, font, Brushes.Black, , );
StringBuilder sb = new StringBuilder();
for (int y = ; y < array_count; y++)
{
sb.Append("\r\n");
for (int x = ; x < array_count; x++)
{
if (bmp.GetPixel(x, y).GetBrightness() > 0.5f)
{
sb.Append(" ");
data[x, y] = false;
}
else
{
sb.Append("#");
data[x, y] = true;
}
}
}
return data;
}
PCB Genesis增加点阵字 实现原理的更多相关文章
- PCB Genesis增加轮廓字 实现原理
在Genesis增加汉字自带是不支持增加汉字的,如果需增加汉字需用到CAD 汉字库才可增加汉字,这里介绍一种脱离汉字库实现 Genesis增加轮廓字(如要变为实体,填空Surface可变为实体字) 一 ...
- PCB genesis自制孔点 Font字体实现方法
一.先看genesis原有Font字体 在PCB工程CAM加孔点字体要求时,通常我们直接用Geneis软件给我们提供了2种孔点字体canned_57与canned_67,但此字体可能不能满足各个工厂个 ...
- PCB Genesis加二维码 实现方式
使用incam可以很轻松的增加2维码,这里通过另外一种方式玩转二维码的加法, 使用谷歌zxing.dll类库实现,将文字信息转为bitmap点阵后,在Genesis绘制点即可. 一.incam增加二维 ...
- PCB Genesis SET拼板(圆形板拼板) 实现效果(二)
越来发现Genesis采用Surface多边形数据结构的重要性了,当撑握了多边形缩放,交集, 差集,并集等算法, 想实现PCB拼板简直轻而易举了;当然借助多边形算法可以开发出更多的PCB实用的工具出来 ...
- PCB Genesis加邮票孔(邮票孔增加方向判断--左右上下)实现算法
之前没解决的问题,当时一下卡在用户界面选择邮票孔增加的方向(上下左右) 与邮票孔实际方位之前的逻辑与非判断上卡壳了,导致一下没进展下去. 回头看原来如此简单 ,将此点记录一下. 1.垂直线定义:80- ...
- PCB genesis连孔加除毛刺孔(圆孔与槽孔)实现方法(二)
一.为什么 连孔加除毛刺孔 原因是 PCB板材中含有玻璃纤维, 毛刺产生位置在于2个孔相交位置,由于此处钻刀受力不均导致纤维切削不断形成毛刺 ,为了解决这个问题:在钻完2个连孔后,在相交处再钻一个孔, ...
- PCB genesis连孔加除毛刺孔(槽孔与槽孔)实现方法(三)
一.为什么 连孔加除毛刺孔 原因是 PCB板材中含有玻璃纤维, 毛刺产生位置在于2个孔相交位置,由于此处钻刀受力不均导致纤维切削不断形成毛刺 ,为了解决这个问题:在钻完2个连孔后,在相交处再钻一个孔, ...
- PCB genesis连孔加除毛刺孔(圆孔与圆孔)实现方法(一)
一.为什么 连孔加除毛刺孔 原因是 PCB板材中含有玻璃纤维, 毛刺产生位置在于2个孔相交位置,由于此处钻刀受力不均导致纤维切削不断形成毛刺 ,为了解决这个问题:在钻完2个连孔后,在相交处再钻一个孔, ...
- PCB Genesis脚本 C#调用Javascript
曾经用node.js测试写Genesis脚本失败了,这次借助开发PCB规则引擎的机会(基于JS V8引擎与.net深度交互性), 验证一下Javascript是否可用于写Genesis脚本. 一.测试 ...
随机推荐
- 排序算法JavaScript版
冒泡排序 function bubbleSort(arr) { var len = arr.length; for (var i = 0; i < len - 1; i++) { for (va ...
- (转)Struts2访问Servlet的API及......
http://blog.csdn.net/yerenyuan_pku/article/details/67315598 Struts2访问Servlet的API 前面已经对Struts2的流程已经执行 ...
- java_遍历文件目录
package util; import java.io.File; import java.io.IOException; //列出File的一些常用操作 public class util { / ...
- S-HR之OSF
1):getWorkDayCount ->ArrayList data = (ArrayList) com.kingdee.shr.rpts.ctrlreport.osf.OSFExecutor ...
- 【LeetCode】2、Add Two Numbers
题目等级:Medium 题目描述: You are given two non-empty linked lists representing two non-negative integers. ...
- Neo4j图数据库从入门到精通
目录 第一章:介绍 Neo4j是什么 Neo4j的特点 Neo4j的优点 第二章:安装 1.环境 2.下载 3.开启远程访问 4.启动 第三章:CQL 1.CQL简介 2.Neo4j CQL命令/条款 ...
- 解决高分屏/高DPI下GNOME3/Linux字体和按钮太小的问题
更改系统设置就好了. 我的设备是Surface Pro,12英寸,分辨率2736x1824,在虚拟机里安装CentOS 7后字特别小,标题栏的最小化/最大化/关闭按钮也很小,眼睛受不了的. 更改两个设 ...
- 初学者对ASCII编码、Unicode编码、UTF-8编码的理解
最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是 255(二进制 11111111=十进制 255),如果要表示更大的整数,就必须用更多的字节. ...
- MongoDB - 增删改查及聚合操作
目录 MongoDB - 增删改查及聚合操作 一. 数据库操作(database) 1. 创建及查看库 2. 删除库 二. 集合collectionc=操作(相当于SQL数据库中的表table) 1. ...
- vue 使用插件
上传加载 :vue-infinite-loading