我们采用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增加点阵字 实现原理的更多相关文章

  1. PCB Genesis增加轮廓字 实现原理

    在Genesis增加汉字自带是不支持增加汉字的,如果需增加汉字需用到CAD 汉字库才可增加汉字,这里介绍一种脱离汉字库实现 Genesis增加轮廓字(如要变为实体,填空Surface可变为实体字) 一 ...

  2. PCB genesis自制孔点 Font字体实现方法

    一.先看genesis原有Font字体 在PCB工程CAM加孔点字体要求时,通常我们直接用Geneis软件给我们提供了2种孔点字体canned_57与canned_67,但此字体可能不能满足各个工厂个 ...

  3. PCB Genesis加二维码 实现方式

    使用incam可以很轻松的增加2维码,这里通过另外一种方式玩转二维码的加法, 使用谷歌zxing.dll类库实现,将文字信息转为bitmap点阵后,在Genesis绘制点即可. 一.incam增加二维 ...

  4. PCB Genesis SET拼板(圆形板拼板) 实现效果(二)

    越来发现Genesis采用Surface多边形数据结构的重要性了,当撑握了多边形缩放,交集, 差集,并集等算法, 想实现PCB拼板简直轻而易举了;当然借助多边形算法可以开发出更多的PCB实用的工具出来 ...

  5. PCB Genesis加邮票孔(邮票孔增加方向判断--左右上下)实现算法

    之前没解决的问题,当时一下卡在用户界面选择邮票孔增加的方向(上下左右) 与邮票孔实际方位之前的逻辑与非判断上卡壳了,导致一下没进展下去. 回头看原来如此简单 ,将此点记录一下. 1.垂直线定义:80- ...

  6. PCB genesis连孔加除毛刺孔(圆孔与槽孔)实现方法(二)

    一.为什么 连孔加除毛刺孔 原因是 PCB板材中含有玻璃纤维, 毛刺产生位置在于2个孔相交位置,由于此处钻刀受力不均导致纤维切削不断形成毛刺 ,为了解决这个问题:在钻完2个连孔后,在相交处再钻一个孔, ...

  7. PCB genesis连孔加除毛刺孔(槽孔与槽孔)实现方法(三)

    一.为什么 连孔加除毛刺孔 原因是 PCB板材中含有玻璃纤维, 毛刺产生位置在于2个孔相交位置,由于此处钻刀受力不均导致纤维切削不断形成毛刺 ,为了解决这个问题:在钻完2个连孔后,在相交处再钻一个孔, ...

  8. PCB genesis连孔加除毛刺孔(圆孔与圆孔)实现方法(一)

    一.为什么 连孔加除毛刺孔 原因是 PCB板材中含有玻璃纤维, 毛刺产生位置在于2个孔相交位置,由于此处钻刀受力不均导致纤维切削不断形成毛刺 ,为了解决这个问题:在钻完2个连孔后,在相交处再钻一个孔, ...

  9. PCB Genesis脚本 C#调用Javascript

    曾经用node.js测试写Genesis脚本失败了,这次借助开发PCB规则引擎的机会(基于JS V8引擎与.net深度交互性), 验证一下Javascript是否可用于写Genesis脚本. 一.测试 ...

随机推荐

  1. 排序算法JavaScript版

    冒泡排序 function bubbleSort(arr) { var len = arr.length; for (var i = 0; i < len - 1; i++) { for (va ...

  2. (转)Struts2访问Servlet的API及......

    http://blog.csdn.net/yerenyuan_pku/article/details/67315598 Struts2访问Servlet的API 前面已经对Struts2的流程已经执行 ...

  3. java_遍历文件目录

    package util; import java.io.File; import java.io.IOException; //列出File的一些常用操作 public class util { / ...

  4. S-HR之OSF

    1):getWorkDayCount ->ArrayList data = (ArrayList) com.kingdee.shr.rpts.ctrlreport.osf.OSFExecutor ...

  5. 【LeetCode】2、Add Two Numbers

    题目等级:Medium 题目描述:   You are given two non-empty linked lists representing two non-negative integers. ...

  6. Neo4j图数据库从入门到精通

    目录 第一章:介绍 Neo4j是什么 Neo4j的特点 Neo4j的优点 第二章:安装 1.环境 2.下载 3.开启远程访问 4.启动 第三章:CQL 1.CQL简介 2.Neo4j CQL命令/条款 ...

  7. 解决高分屏/高DPI下GNOME3/Linux字体和按钮太小的问题

    更改系统设置就好了. 我的设备是Surface Pro,12英寸,分辨率2736x1824,在虚拟机里安装CentOS 7后字特别小,标题栏的最小化/最大化/关闭按钮也很小,眼睛受不了的. 更改两个设 ...

  8. 初学者对ASCII编码、Unicode编码、UTF-8编码的理解

    最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是 255(二进制 11111111=十进制 255),如果要表示更大的整数,就必须用更多的字节. ...

  9. MongoDB - 增删改查及聚合操作

    目录 MongoDB - 增删改查及聚合操作 一. 数据库操作(database) 1. 创建及查看库 2. 删除库 二. 集合collectionc=操作(相当于SQL数据库中的表table) 1. ...

  10. vue 使用插件

    上传加载 :vue-infinite-loading