谁能帮我把VB代码转成C#谢谢!!

CraxyMouse 2010-01-21 11:37:09
Imports System.Text
Imports System.Drawing
Imports System.Drawing.Imaging
Public Class FontConvertBmp
Private m_FontName As String '字体名字
Private m_FontSize As Integer '字体大小
Private m_String As String '需要打印的文本
Private m_FontBold As Boolean '字体样式
Private m_X As Integer, m_Y As Integer '打印时候的X,Y坐标
Private m_XZoom As Integer, m_YZoom As Integer '打印时候的X,Y方向的放大倍数最大只能为10倍
Private List1 As List(Of Char), List2 As List(Of Integer) '压缩代码集合
Private S As String
Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As IntPtr) As Integer
Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As IntPtr) As IntPtr
Public Property XZoom() As Integer
Get
Return m_XZoom
End Get
Set(ByVal value As Integer)
If value > 0 AndAlso value <= 10 Then
m_XZoom = value
End If
End Set
End Property
Public Property YZoom() As Integer
Get
Return m_YZoom
End Get
Set(ByVal value As Integer)
If value > 0 AndAlso value <= 10 Then
m_YZoom = value
End If
End Set
End Property
Public Property X() As Integer
Get
Return m_X
End Get
Set(ByVal value As Integer)
If value >= 0 Then
m_X = value
End If
End Set
End Property
Public Property Y() As Integer
Get
Return m_Y
End Get
Set(ByVal value As Integer)
If value >= 0 Then
m_Y = value
End If
End Set
End Property
Public Property FontName() As String
Get
Return m_FontName
End Get
Set(ByVal value As String)
m_FontName = value
End Set
End Property
Public Property FontSize() As Integer
Get
Return m_FontSize
End Get
Set(ByVal value As Integer)
If value > 7 AndAlso value <= 500 Then
m_FontSize = value
End If
End Set
End Property
Public Property Text() As String
Get
Return m_String
End Get
Set(ByVal value As String)
m_String = value
End Set
End Property
Public Property FontBold() As Boolean
Get
Return m_FontBold
End Get
Set(ByVal value As Boolean)
m_FontBold = value
End Set
End Property
Public Sub New()
m_FontName = "宋体"
m_FontSize = 12
m_FontBold = False
m_X = 1
m_Y = 1
m_XZoom = 1
m_YZoom = 1
InitDictionary()
End Sub
Public Function Convert() As String
Dim Hdc As IntPtr
Hdc = CreateCompatibleDC(IntPtr.Zero)
Dim Graphic As Graphics = Graphics.FromHdc(Hdc)
Dim Width As Integer, Height As Integer
Dim G As Graphics, Image As Bitmap
Dim Font As Font
If m_FontBold = True Then
Font = New Font(m_FontName, m_FontSize, Drawing.FontStyle.Bold, GraphicsUnit.Pixel)
Else
Font = New Font(m_FontName, m_FontSize, Drawing.FontStyle.Regular, GraphicsUnit.Pixel)
End If
Width = (CInt(Graphic.MeasureString(m_String, Font).Width) \ 8 + 1) * 8 '将行规格话便于计算字节
Height = Font.Height '列高
Image = New Bitmap(Width, Height, PixelFormat.Format32bppArgb)
G = Graphics.FromImage(Image)
G.Clear(Color.White)
G.DrawString(m_String, Font, Brushes.Black, 0, 2) '将文本写入图片
Dim Value As Integer = Width * Height
Dim TempString As New StringBuilder(Value)
Dim DesString As New StringBuilder(Value)
DesString.Append("~DGOUTSTR01," & Width * Height \ 8 & "," & Width \ 8 & ",")
Dim i As Integer, j As Integer
Dim Sum As Integer
For j = 0 To Height - 1 '由于内存中的图片是倒置,所以要反取数据
For i = 0 To Width \ 4 - 1
Sum = 0
For m As Integer = 0 To 3 '由于4个点可用1个十六进制数表示因此一次取4个点进行转换
If Image.GetPixel(i * 4 + m, j).B = 0 Then '由于只打印黑白点所以根据RGB分量判断是否需要打印该点
Sum += 1 << (3 - m) '通过移位操作将该点的信息与一个BIT相对应
End If
Next
TempString.Append(Hex(Sum)) '将取出的点转换成16进制数
Next
Next
Dim Count As Integer = 1 '将转成16进制的文本进行压缩
For i = 1 To TempString.Length - 1
If TempString.Chars(i - 1) = TempString.Chars(i) Then
Count += 1
If i = TempString.Length - 1 Then
DesString.Append(CompressCode(Count) & TempString.Chars(i))
End If
Else
DesString.Append(CompressCode(Count) & TempString.Chars(i - 1))
S = String.Empty
Count = 1
End If
Next
DesString.Append(vbCrLf & "^FO" & m_X.ToString & "," & m_Y.ToString & "^XGOUTSTR01," & m_XZoom & "," & m_YZoom & ",^FS")
DeleteDC(Hdc)
G.Dispose()
Image.Dispose()
Graphic.Dispose()
Return DesString.ToString
End Function
Private Function CompressCode(ByRef Input As Integer) As String
If Input > 1 Then
For i As Integer = List1.Count - 1 To 0 Step -1 '使用递归和贪婪算法将连续的数字转换成ZPL压缩代码,如000可用I0表示
If Input >= List2.Item(i) Then
S &= List1.Item(i)
Input -= List2.Item(i)
CompressCode(Input)
End If
Next
End If
Return S
End Function
Private Sub InitDictionary()
'将ZPL定义的压缩代码写入集合
List1 = New List(Of Char)
List2 = New List(Of Integer)
For i As Integer = 0 To 18
List1.Add(ChrW(71 + i))
List2.Add(i + 1)
Next
For i As Integer = 0 To 19
List1.Add(ChrW(103 + i))
List2.Add(20 * (i + 1))
Next
End Sub
End Class
...全文
153 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
z415353144 2010-01-25
  • 打赏
  • 举报
回复
顶二楼的,不过有的转过来有点小毛病,得改改。
messi_yang 2010-01-25
  • 打赏
  • 举报
回复
有網站可以直接轉化的···
24K純帥 2010-01-25
  • 打赏
  • 举报
回复
up..
longhair9711 2010-01-25
  • 打赏
  • 举报
回复
up
LoveMango 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 psyke99 的回复:]
不用Reflector.exe?.net 必备工具
推荐一下

[/Quote]
up
psyke99 2010-01-25
  • 打赏
  • 举报
回复
不用Reflector.exe?.net 必备工具
推荐一下
yilanwuyu123 2010-01-21
  • 打赏
  • 举报
回复
mark
满衣兄 2010-01-21
  • 打赏
  • 举报
回复
http://www.developerfusion.com/tools/convert/vb-to-csharp/
这个网站挺不错的,在线转。
满衣兄 2010-01-21
  • 打赏
  • 举报
回复

using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;
public class FontConvertBmp
{
private string m_FontName;
//字体名字
private int m_FontSize;
//字体大小
private string m_String;
//需要打印的文本
private bool m_FontBold;
//字体样式
private int m_X;
private int m_Y;
//打印时候的X,Y坐标
private int m_XZoom;
private int m_YZoom;
//打印时候的X,Y方向的放大倍数最大只能为10倍
private List<char> List1;
private List<int> List2;
//压缩代码集合
private string S;
[DllImport("gdi32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
private static extern int DeleteDC(IntPtr hdc);
[DllImport("gdi32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
private static extern IntPtr CreateCompatibleDC(IntPtr hdc);
public int XZoom {
get { return m_XZoom; }
set {
if (value > 0 && value <= 10) {
m_XZoom = value;
}
}
}
public int YZoom {
get { return m_YZoom; }
set {
if (value > 0 && value <= 10) {
m_YZoom = value;
}
}
}
public int X {
get { return m_X; }
set {
if (value >= 0) {
m_X = value;
}
}
}
public int Y {
get { return m_Y; }
set {
if (value >= 0) {
m_Y = value;
}
}
}
public string FontName {
get { return m_FontName; }
set { m_FontName = value; }
}
public int FontSize {
get { return m_FontSize; }
set {
if (value > 7 && value <= 500) {
m_FontSize = value;
}
}
}
public string Text {
get { return m_String; }
set { m_String = value; }
}
public bool FontBold {
get { return m_FontBold; }
set { m_FontBold = value; }
}
public FontConvertBmp()
{
m_FontName = "宋体";
m_FontSize = 12;
m_FontBold = false;
m_X = 1;
m_Y = 1;
m_XZoom = 1;
m_YZoom = 1;
InitDictionary();
}
public string Convert()
{
IntPtr Hdc = default(IntPtr);
Hdc = CreateCompatibleDC(IntPtr.Zero);
Graphics Graphic = Graphics.FromHdc(Hdc);
int Width = 0;
int Height = 0;
Graphics G = default(Graphics);
Bitmap Image = default(Bitmap);
Font Font = default(Font);
if (m_FontBold == true) {
Font = new Font(m_FontName, m_FontSize, Drawing.FontStyle.Bold, GraphicsUnit.Pixel);
}
else {
Font = new Font(m_FontName, m_FontSize, Drawing.FontStyle.Regular, GraphicsUnit.Pixel);
}
Width = ((int)Graphic.MeasureString(m_String, Font).Width / 8 + 1) * 8;
//将行规格话便于计算字节
Height = Font.Height;
//列高
Image = new Bitmap(Width, Height, PixelFormat.Format32bppArgb);
G = Graphics.FromImage(Image);
G.Clear(Color.White);
G.DrawString(m_String, Font, Brushes.Black, 0, 2);
//将文本写入图片
int Value = Width * Height;
StringBuilder TempString = new StringBuilder(Value);
StringBuilder DesString = new StringBuilder(Value);
DesString.Append("~DGOUTSTR01," + Width * Height / 8 + "," + Width / 8 + ",");
int i = 0;
int j = 0;
int Sum = 0;
for (j = 0; j <= Height - 1; j++) {
//由于内存中的图片是倒置,所以要反取数据
for (i = 0; i <= Width / 4 - 1; i++) {
Sum = 0;
for (int m = 0; m <= 3; m++) {
//由于4个点可用1个十六进制数表示因此一次取4个点进行转换
if (Image.GetPixel(i * 4 + m, j).B == 0) {
//由于只打印黑白点所以根据RGB分量判断是否需要打印该点
//通过移位操作将该点的信息与一个BIT相对应
Sum += 1 < (3 - m);
}
}
//将取出的点转换成16进制数
TempString.Append(Conversion.Hex(Sum));
}
}
int Count = 1;
//将转成16进制的文本进行压缩
for (i = 1; i <= TempString.Length - 1; i++) {
if (TempString.Chars(i - 1) == TempString.Chars(i)) {
Count += 1;
if (i == TempString.Length - 1) {
DesString.Append(CompressCode(Count) + TempString.Chars(i));
}
}
else {
DesString.Append(CompressCode(Count) + TempString.Chars(i - 1));
S = string.Empty;
Count = 1;
}
}
DesString.Append(Constants.vbCrLf + "^FO" + m_X.ToString + "," + m_Y.ToString + "^XGOUTSTR01," + m_XZoom + "," + m_YZoom + ",^FS");
DeleteDC(Hdc);
G.Dispose();
Image.Dispose();
Graphic.Dispose();
return DesString.ToString;
}
private string CompressCode(ref int Input)
{
if (Input > 1) {
for (int i = List1.Count - 1; i >= 0; i += -1) {
//使用递归和贪婪算法将连续的数字转换成ZPL压缩代码,如000可用I0表示
if (Input >= List2.Item(i)) {
S += List1.Item(i);
Input -= List2.Item(i);
CompressCode(Input);
}
}
}
return S;
}
private void InitDictionary()
{
//将ZPL定义的压缩代码写入集合
List1 = new List<char>();
List2 = new List<int>();
for (int i = 0; i <= 18; i++) {
List1.Add(Strings.ChrW(71 + i));
List2.Add(i + 1);
}
for (int i = 0; i <= 19; i++) {
List1.Add(Strings.ChrW(103 + i));
List2.Add(20 * (i + 1));
}
}
}
http://www.developerfusion.com/tools/convert/vb-to-csharp/
前 言 visual basic继承了basic语言易学易用的特点,特别适合于初学者学习windows系统编程。随着21世纪信息社会的到来,计算机在人们的工作和生活中的深入,要求我们越来越多地与计算机打交道,为了使用户在繁忙的日程工作中得到放松,于是出现了各种各样的休闲软件,如聊天工具,游戏等等。于是我们小组着手设计开始一个这样的游戏软件。通过这学期来Visual Basic的学习,我初步掌握了Visual Basic语言的最基本的知识,于是在化希耀张兵等老师的指导下动手用Visual Basic编写俄罗斯方块游戏。 无可争议,《俄罗斯方块》是有史以来最伟大的游戏之一。它是永恒的娱乐经典,但它实际上又和那些传统的经典娱乐方式不同,因为它的本质是电子化的,所以它的确属于现代产物。《俄罗斯方块》举世闻名的游戏性,在该游戏新鲜出炉时就显得非常直观。某些与坠落的玩具碎片和它们的形状有关的东西,使得哪怕新手也会很自然地企图把它们排列起来,并加以适当组合,就好似《俄罗斯方块》触动了我们某些内在的感官,使得哪怕是我们当中最杂乱无章的人也要把事情整理妥当。 在曾经发布过的所有游戏中,《俄罗斯方块》还被认为是仅有的一个能够真正吸引广泛人群的作品。某些批评家也许会声称,《俄罗斯方块》要比过去二十年间出现的任何东西都要浪费人们的时间。至于我们,则要欣然提名它为GameSpot评选出的历史上最伟大游戏之一。 为了怀念经典,也为了能够给大多的计算机用户在工作之余找到一个休闲、娱乐的一个方式,我们小组开始着手用VB语言开发一个经典的俄罗斯方块游戏。 工程概况 1.1 项目名称 俄罗斯方块游戏 1.2 设计平台 VB 全称Visual Basic,它是以Basic语言作为其基本语言的一种可视化编程工具。 Vb是microsoft公司于1991年退出的windows应用程序开发工具visual意思是“可视化的”。在它刚推出来时,自身还存在一些缺陷,功能也相对少一些。但是经过多年的开发研究。最近microsoft公司又推出了VB6.0版本 VB6.0运行环境:硬件,要求486以上的处理器、16MB以上内存,50MB 以上的硬盘,cd-rom驱动器,鼠标。软件:要求windows 95以上版本。 1.3程序设计思想 游戏是用来给大家娱乐的,所以要能在使用的过程中给大家带来快乐,消除大家的疲劳,所以我们在游戏中添加了漂亮的场景和动听的音乐,设置了过关升级的功能,激发大家的娱乐激情。 从游戏的基本玩法出发,主要就是俄罗斯方块的形状和旋转,我们在设计中在一个图片框中构造了一个4*4的网状小块,由这些小块组合成新的形状,每四个小块连接在一起就可以构造出一种造型,因此我们总共设计了7中造型,每种造型又可以通过旋转而变化出2到4种形状,利用随机函数在一个预览窗体中提前展示形状供用户参考,然后将展示的形状复制到游戏窗体中进行摆放,在游戏窗体中用户就可以使用键盘的方向键来控制方块的运动,然后利用递归语句对每一行进行判断,如果有某行的方块是满的,则消除这行的方块,并且使上面的方块自由下落,其中,方块向下的速度是有时钟控件控制的,在游戏中,用户也可以使用向下键加快下落速度,定义一个变量,对消除的函数进行记录,最后就可以得出用户的分数,用if 语句对分数判断,达到一定的积分就可以升级到下一个档次。 俄罗斯方块游戏设计的主要步骤为以下10个方面: (1)游戏界面的设计。 (2)俄罗斯方块的造型。 (3)俄罗斯方块的旋转。 (4)俄罗斯方块的运动情况(包括向左,向右和向下)。 (5)俄罗斯方块的自动消行功能。 (6)游戏级别的自由选择。 (7)游戏速度的自由选择。 (8)游戏得分的计算。 (9)游戏菜单选项的设计及功能实现。 (10)游戏的背景音乐。 1.4运用的控件和主要对象 我们在设计过程中主要用到的控件有:command控件,image控件,picture控件,label控件,timer控件,text控件,windows media player控件等等。 1.5主要实现的功能 我们开发的俄罗斯方块游戏,主要实现了以下几种功能: 1.可以灵活控制方块在图形框中运动。 2.游戏过程中方块可以自由旋转。 3.当某一行的方块排列满时,将自动将这一行方块消除,然后将上面所有方块向下移动,可以支持连续消行。 4.游戏前可以选择游戏的速度和游戏的等级,游戏速度既为方块下落速度,游戏等级为初始游戏时在基层随机生成一定行数的无规律方块,生成的行数由你来选择,每行至少产生5个以上的无规律方块,这样增加了游戏难度,对于游戏高手来说,无疑不是一个新的挑战。 5.游戏的得分支持积分,并且按照公式: 得分 = 原来分数+ 100 * (2 ^ 同时消除的行数-1) 这样,你同一时间消除
c#数据库系统心得体会 数据库课程设计主要的目标是利用课程中学到的数据库知识和技术较好的开发设计出数 据库应用系统,去解决各行各业信息化处理的要求。下面是带来的,仅供参考。 c#数据库系统心得体会一: 这次数据库课程设计用的是Microsoft Visual FoxPro 6.0 ,而我们平时用的Microsoft SQL Server 20xx,虽然对VFP完全陌生,但在老师的指引下,我们近乎完美的完成了课程设计。当然 过程是艰辛的。 面对着完全陌生的操作环境VFP,许多同学开始埋怨,要求用SQL,用我们学过的ASP等来 完成设计。但我们慢慢发现用VFP做课程设计其实很有优势,于是它的这个优势激发了我 们去了解它的欲望。老师先将VFP中基本的建数据库,建表以及建表单等向我们演示了一 遍,我们也仿照着做了,发觉并不是很难。但想到这次课程设计做的是一套学生学籍和 成绩管理系统,我们又开始茫然了。那天,老师给我们看了一段可以让文字循环移动的 代码,这使我们产生了好奇心理,有了快速了解它的冲动。因为用面向对象的语言做特 效,这还是第一次。下课之后我把那段我们不了解的语言写的特效代码发到了VFP论坛上 请人忙解释,最后我们完全理解了那段代码的意思。 这次课程设计我们克服了炎热的天气(学校机房之前没装空调……后来设计完才装……),也 克服对新知识的恐惧感以及畏难情绪。我们懂得了团队合作的重要性,也懂得了团队中 如何交流、如何分工,如何集体讨论难点。我们充分利用了网络资源(技术论坛,共享的 实例等)。 我们喜欢这次课程设计的感觉,喜欢编程,喜欢团队交流。 c#数据库系统心得体会二: 在我看来,数据库课程设计主要的目标是利用课程中学到的数据库知识和技术较好的开 发设计出数据库应用系统,去解决各行各业信息化处理的要求。通过这次的课程设计, 可以巩固我们对数据库基本原理和基础理论的理解,掌握数据库应用系统设计开发的基 本方法,进一步提高我们综合运用所学知识的能力。 当我们这组决定做大学生就业咨询系统时,我们并没有着手写程序。而是大家一起商量 这个系统概述、系统目标、系统需求、业务流程分析、数据流程分析和数据词典。当这 些都准备好了之后,我们进行模块的分工。每个人都有自己的模块设计,而且写出来的 代码要求可以实现相应模块的功能,得到理想的效果。当每个人都把自己的分工做好了 ,最后会由一个人把这些全部组合搭建在一起。我们使用的是Html和php相互嵌套使用, 当一个系统做好了之后,我会好好地把程序都看一遍,理会其中的奥秘。 我所负责的是数据库的备份和还原还有一些界面的实现。还记得自己刚接触html的时候 ,觉得很感兴趣,所以有一段时间几乎到了痴迷的程度。然而Php是我刚接触不久的一种 编程语言。不过觉得它的功能真的很强大,可以开发出很多大型的系统。但是在做备份 和还原的时候,要考虑的东西还是很多的。当我遇到错误的时候,感到很受打击。值得 欣慰的是,在同学的助和大量参考书的查阅下,我把自己的模块做好了。这就是我收 获最大的地方。而且,我明白了遇到困难永不放弃的重要性,我知道了团队合作的重要 性,我领悟了只有坚持不懈才会取得胜利。 知识的获得是无止境的,只要你想学,只要你行动,没有什么会难倒我们的。回首这一 个多星期的课程设计,我很欣慰。因为我有了动力,有了勇气。谢谢老师对我们的不懈 助,谢谢学校给了我们这一次实践的机会,也谢谢组员们的关怀。这些美好的回忆美 好的东西将永远伴随着我。 c#数据库系统心得体会三: 数据库课程设计大赛的尘嚣渐渐远去,怀着对这次大赛的些许不舍,怀着对当初课程设 计开始时候的豪情万丈的决心的留恋,怀着通过这次课程设计积累的信心与斗志,我开 始写这篇文章,为自己的足迹留下哪怕是微不足道但是对自己弥足珍贵的痕迹并期望与 大家共勉。 首先,让我的记忆追溯到大二暑假,在老大的指引下(老大劝我学asp.net),我接触到m icrosoft 公司的.net产品。那个时候我已经学过vc和asp,因为windows程序设计实验的课的关系 ,接触过vb,但是没有专门去学他,因为习惯了c++里面的class,int,觉得vb的sub, var 看着就不是很顺心。我是一个好奇心很强的人,突然看到了一个号称".net是用于创建下 一代应用程序的理想而又现实的开发工具",而且主推c#语言,由于对c语言的一贯好感 ,我几乎是立刻对他产生了兴趣。我就开始了对c#的学习,任何语言都不是孤立存在的 ,所以数据交互是很重要的,暑假的时候我把我们这学期的课本数据库系统概论看了一 遍。我记得以前用c语言编程的时候,数据是在内存中申请空间,譬如使用数组等等。很 耗费内存空间。这个时候就是数据库站出来的时候啦,于是我又装上了sql server20xx,以前学a

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧