不使用字体来绘制CODE39码
效果图
使用
-
MyImage.BandCode.Code39_Code39=
new
MyImage.BandCode.Code39();
-
-
_Code39.Height=120;
-
_Code39.Magnify=1;
-
_Code39.ViewFont=
new
Font(
"宋体"
,20);
-
pictureBox1.Image=_Code39.GetCodeImage(
"123ABC4567890"
,MyImage.BandCode.Code39.Code39Model.Code39Normal,
true
);
-
pictureBox1.Image.Save(@
"C:/1.bmp"
);
全部代码
-
using
System;
-
using
System.Collections;
-
using
System.ComponentModel;
-
using
System.Drawing;
-
using
System.Data;
-
-
-
-
namespace
MyImage.BandCode
-
{
-
-
-
-
-
-
public
class
Code39
-
{
-
private
Hashtablem_Code39=
new
Hashtable();
-
-
private
byte
m_Magnify=0;
-
-
-
-
public
byte
Magnify{
get
{
return
m_Magnify;}
set
{m_Magnify=value;}}
-
-
private
int
m_Height=40;
-
-
-
-
public
int
Height{
get
{
return
m_Height;}
set
{m_Height=value;}}
-
-
private
Fontm_ViewFont=
null
;
-
-
-
-
public
FontViewFont{
get
{
return
m_ViewFont;}
set
{m_ViewFont=value;}}
-
-
-
-
public
Code39()
-
{
-
-
m_Code39.Add(
"A"
,
"1101010010110"
);
-
m_Code39.Add(
"B"
,
"1011010010110"
);
-
m_Code39.Add(
"C"
,
"1101101001010"
);
-
m_Code39.Add(
"D"
,
"1010110010110"
);
-
m_Code39.Add(
"E"
,
"1101011001010"
);
-
m_Code39.Add(
"F"
,
"1011011001010"
);
-
m_Code39.Add(
"G"
,
"1010100110110"
);
-
m_Code39.Add(
"H"
,
"1101010011010"
);
-
m_Code39.Add(
"I"
,
"1011010011010"
);
-
m_Code39.Add(
"J"
,
"1010110011010"
);
-
m_Code39.Add(
"K"
,
"1101010100110"
);
-
m_Code39.Add(
"L"
,
"1011010100110"
);
-
m_Code39.Add(
"M"
,
"1101101010010"
);
-
m_Code39.Add(
"N"
,
"1010110100110"
);
-
m_Code39.Add(
"O"
,
"1101011010010"
);
-
m_Code39.Add(
"P"
,
"1011011010010"
);
-
m_Code39.Add(
"Q"
,
"1010101100110"
);
-
m_Code39.Add(
"R"
,
"1101010110010"
);
-
m_Code39.Add(
"S"
,
"1011010110010"
);
-
m_Code39.Add(
"T"
,
"1010110110010"
);
-
m_Code39.Add(
"U"
,
"1100101010110"
);
-
m_Code39.Add(
"V"
,
"1001101010110"
);
-
m_Code39.Add(
"W"
,
"1100110101010"
);
-
m_Code39.Add(
"X"
,
"1001011010110"
);
-
m_Code39.Add(
"Y"
,
"1100101101010"
);
-
m_Code39.Add(
"Z"
,
"1001101101010"
);
-
m_Code39.Add(
"0"
,
"1010011011010"
);
-
m_Code39.Add(
"1"
,
"1101001010110"
);
-
m_Code39.Add(
"2"
,
"1011001010110"
);
-
m_Code39.Add(
"3"
,
"1101100101010"
);
-
m_Code39.Add(
"4"
,
"1010011010110"
);
-
m_Code39.Add(
"5"
,
"1101001101010"
);
-
m_Code39.Add(
"6"
,
"1011001101010"
);
-
m_Code39.Add(
"7"
,
"1010010110110"
);
-
m_Code39.Add(
"8"
,
"1101001011010"
);
-
m_Code39.Add(
"9"
,
"1011001011010"
);
-
m_Code39.Add(
"+"
,
"1001010010010"
);
-
m_Code39.Add(
"-"
,
"1001010110110"
);
-
m_Code39.Add(
"*"
,
"1001011011010"
);
-
m_Code39.Add(
"/"
,
"1001001010010"
);
-
m_Code39.Add(
"%"
,
"1010010010010"
);
-
m_Code39.Add(
"$"
,
"1001001001010"
);
-
m_Code39.Add(
"."
,
"1100101011010"
);
-
m_Code39.Add(
""
,
"1001101011010"
);
-
-
}
-
-
-
public
enum
Code39Model
-
{
-
-
-
-
Code39Normal,
-
-
-
-
Code39FullAscII
-
}
-
-
-
-
-
-
-
-
public
BitmapGetCodeImage(
string
p_Text,Code39Modelp_Model,
bool
p_StarChar)
-
{
-
string
_ValueText=
""
;
-
string
_CodeText=
""
;
-
char
[]_ValueChar=
null
;
-
switch
(p_Model)
-
{
-
case
Code39Model.Code39Normal:
-
_ValueText=p_Text.ToUpper();
-
break
;
-
default
:
-
_ValueChar=p_Text.ToCharArray();
-
for
(
int
i=0;i!=_ValueChar.Length;i++)
-
{
-
if
((
int
)_ValueChar[i]>=97&&(
int
)_ValueChar[i]<=122)
-
{
-
_ValueText+=
"+"
+_ValueChar[i].ToString().ToUpper();
-
-
}
-
else
-
{
-
_ValueText+=_ValueChar[i].ToString();
-
}
-
}
-
break
;
-
}
-
-
-
_ValueChar=_ValueText.ToCharArray();
-
-
if
(p_StarChar==
true
)_CodeText+=m_Code39[
"*"
];
-
-
for
(
int
i=0;i!=_ValueChar.Length;i++)
-
{
-
if
(p_StarChar==
true
&&_ValueChar[i]==
'*'
)
throw
new
Exception(
"带有起始符号不能出现*"
);
-
-
object
_CharCode=m_Code39[_ValueChar[i].ToString()];
-
if
(_CharCode==
null
)
throw
new
Exception(
"不可用的字符"
+_ValueChar[i].ToString());
-
_CodeText+=_CharCode.ToString();
-
}
-
-
-
if
(p_StarChar==
true
)_CodeText+=m_Code39[
"*"
];
-
-
-
Bitmap_CodeBmp=GetImage(_CodeText);
-
GetViewImage(_CodeBmp,p_Text);
-
return
_CodeBmp;
-
}
-
-
-
-
-
-
-
-
-
private
BitmapGetImage(
string
p_Text)
-
{
-
char
[]_Value=p_Text.ToCharArray();
-
-
-
-
Bitmap_CodeImage=
new
Bitmap(_Value.Length*((
int
)m_Magnify+1),(
int
)m_Height);
-
Graphics_Garphics=Graphics.FromImage(_CodeImage);
-
-
_Garphics.FillRectangle(Brushes.White,
new
Rectangle(0,0,_CodeImage.Width,_CodeImage.Height));
-
-
int
_LenEx=0;
-
for
(
int
i=0;i!=_Value.Length;i++)
-
{
-
int
_DrawWidth=m_Magnify+1;
-
if
(_Value[i]==
'1'
)
-
{
-
_Garphics.FillRectangle(Brushes.Black,
new
Rectangle(_LenEx,0,_DrawWidth,m_Height));
-
-
}
-
else
-
{
-
_Garphics.FillRectangle(Brushes.White,
new
Rectangle(_LenEx,0,_DrawWidth,m_Height));
-
}
-
_LenEx+=_DrawWidth;
-
}
-
-
-
-
_Garphics.Dispose();
-
return
_CodeImage;
-
}
-
-
-
-
-
-
private
void
GetViewImage(Bitmapp_CodeImage,
string
p_Text)
-
{
-
if
(m_ViewFont==
null
)
return
;
-
Graphics_Graphics=Graphics.FromImage(p_CodeImage);
-
SizeF_FontSize=_Graphics.MeasureString(p_Text,m_ViewFont);
-
-
if
(_FontSize.Width>p_CodeImage.Width||_FontSize.Height>p_CodeImage.Height-20)
-
{
-
_Graphics.Dispose();
-
return
;
-
}
-
int
_StarHeight=p_CodeImage.Height-(
int
)_FontSize.Height;
-
-
_Graphics.FillRectangle(Brushes.White,
new
Rectangle(0,_StarHeight,p_CodeImage.Width,(
int
)_FontSize.Height));
-
-
int
_StarWidth=(p_CodeImage.Width-(
int
)_FontSize.Width)/2;
-
-
_Graphics.DrawString(p_Text,m_ViewFont,Brushes.Black,_StarWidth,_StarHeight);
-
-
_Graphics.Dispose();
-
-
}
-
}
-
-
}
http://blog.csdn.net/zgke/archive/2008/12/12/3503845.aspx
分享到:
相关推荐
本程序提供了录入汉字,转换成拼音首码和全码、五笔码,还实现了简体中文和繁体的互换。有需要的可以下一下。
.net 链接sql数据库全码 有需要的朋友可以下载 我会时时更新小型帮忙
譬如,“全”字的编码为:QRW,即“全”(quan)、“人”(ren)、“王”(wang),码=MSM,即“码”(ma)、“石”(shi)、“马”(ma)。 2、“有字拆字,无字拆笔”。譬如,“石”字的编码为:SHH。即“石”...
文件上传功能全码,值得看看。大家可以分享分享
纯页面的色彩全码。不容错过
很不错的一个企业网站,速度还是很快的。后台也是完全可以使用的,是asp和 access的,使用方便,简单,要求不高的网站可以使用
最新的全码推算软件 适合supermax卡 无需推算全码 一气合成 个人感觉 比较稳定实用!
C#使用directshow(C#实现库)实现的MP3音频结合图片合成电子视频相册的应用。vs项目全码。
扫描工具!\FD3_0全码全能版.rar
* 全码 WDB 论坛功能特性介绍 * ------------------------------- 基础: 1.仍然是PHP4+文本,没有数据库 2.高效率简洁的代码,力求算法优化,在WDB基础上更简化了代码,使运行更快 3.基于Session...
该文档以C#开发语言,实现了由汉字组获得其拼音首码,五笔首码以及拼音全码的功能。
悟空F9
FD1.5全码版 2.21更改
全码版,解决最后K1算不出问题,自动尝试猜出,不用手工输入。
OpenGL Game Programming游戏编程全码 从基础教学开始 到游戏制作 对初学者有很多有用的东西
网吧管理系统!网吧基本缴费,上机,下机等等功能都有!代码齐全,且有老板键。可直接运行。VS2005以上版本可直接运行,数据库Sql server 2008可附加数据库。
fd3 0全码全能版是一款解卡利器有效提高解卡速度。其他废话不说本人亲测,360安全卫士有提示请允许否测不能正常打开软件。