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脚本. 一.测试 ...
随机推荐
- 【VHDL】组合逻辑电路和时序逻辑电路的区别
简单的说,组合电路,没有时钟:时序电路,有时钟. ↓ 也就是说,组合逻辑电路没有记忆功能,而时序电路具有记忆功能. ↓ 在VHDL语言中,不完整条件语句对他们二者的影响分别是什么?组合逻辑中可能生成锁 ...
- 回顾Google IO 2016 -Keynote【图解】
Google IO大会倒计时进行中~~ 两名演奏者在使用高空“古筝”. 最后5秒倒计时~~~~全场轰动~ 倒计时结束,IO大会正式开始.屏幕中,一个人把纯白的唱片放入唱片机中. 然后欢快的音乐响起,台 ...
- HDU_1285_拓扑排序(优先队列)
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- Python 之pygame飞机游戏
import pygame from pygame.locals import * import time import random # 我机 class HeroPlane(object): de ...
- todey
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> 框架集fromset ...
- 小白学习Spark系列五:scala解析多级json格式字符串
一.背景 处理json格式的字符串,key值一定为String类型,但value不确定是什么类型,也可能嵌套json字符串,以下是使用 JSON.parseFull 来解析多层json. 二.实例代码 ...
- _initialize() 区别 __construct()
_initialize()方法是在任何方法执行之前,都要执行的,当然也包括 __construct构造函数. 也就是说如果存在_initialize()函数,调用对象的任何方法都会导致_initial ...
- hdu 1220组合数学
两个立方体相交的点数有0 1 2 4 不考虑相交点数的话有C(n,2)个立方对. 而求不超过两个交点的对数,即为用总的减去有四个交点的对数,而四个交点即为同面 四个交点的对数为相同的面的个数为(所有的 ...
- How to change java version in Linux
How to change default Java version on Linux Posted on November 1, 2015 by Dan Nanni Leave a comment ...
- OSI七层参考模型每一层都有哪些协议
OSI七层参考模型每一层都有哪些协议 第七层应用层 协议:DHCP • DNS • FTP • Gopher • HTTP • IMAP4 • IRC • NNTP • XMPP • POP3 • S ...