




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要:C#进行游戏编程一直受到一些C+程序员的怀疑和猜忌,是不是真的C#就不能进行游戏编程呢? 回答当然是否定的,因为,微软已经发布了DirectX9.0SDK开发包,使得C#进行游戏编程简单易行,本篇在.NET环境下,用C#调用DirectX进行游戏编程,通过简单而又明朗的编程实例揭示C# DirectX编程的奥秘,在本篇的开始,作者对.NET、C#、DirectX及游戏制作的相关知识都作了介绍和讲解,然后,一步步的制作“文字对战游戏”,相信读完本文,你一定会受益非浅。关键词:C# DirectX .NET “文字对战游戏”一、.NET概述 1. .NET是什么,刚刚开始接触.NET的人不竟要问,是啊,.NET到底是什么,它能完成哪些功能,微软对我们的问题作出了精典的回答:.NET Framework 是一种新的计算平台,它简化了在高度分布式 Internet 环境中的应用程序开发,能够快速的创建Windows应用程序、WEB程序以及移动平台Windows Mobile的应用程序,随着.NET2.0版的发布,.NET 的功能越来越强大。 .NET2.0分为 .NET Framework2.0和.NET Compact Framework2.0(简称.NET CF2.0),其它.NET Framework2.0主要用于Windows系统的编程开发,而.NET CF2.0作为.NET Framework2.0的精装版,主要用于Windows Mobile手机操作系统的编程。 2. 在.NET环境下,可以使用的编程语言很多,如:C#、C+、VB等,到底使用哪种语言更适合于你,这要看你的爱好了,对我来说,我更热衷于C#语言,因此,本篇将使用C#语言对“文字对战游戏”进行编程及介绍。二、 C#语言概述 1. C#是微软新推出的一种编程语言。其功能强大。它的学习和使用象VB一样简单。只要稍有一点编程知识,都非常容易上手学习C#。 2. 由于.NET框架类库对套接字、TCP、HTTP等协议的支持,C#的网络编程功能也相当强大。 3. C#可以直接调用GDI+进行绘图、图形和多媒体编程。而GDI+的强大功能绝对让你大吃一惊。 4. DirectX编程,相信大家并不陌生,自DirectX7.0诞生以来,就有了基于VB编程的DirectX库DxVBLib,同样,DirectX9.0C诞生及DirectX9SDK开发包的推出,在C#中使用DirectX进行多媒体及游戏编程变得简单易行,在本篇中,我们将要学习C#中调用DirectX进行“文字对战游戏”的编程。 5. ASP.net编程,在.NET还没有出现之前,用ASP进行WEB程序编程,是每个程序员做梦都想精通的,早期在网络上运行的80的WEB程序是都是用ASP编写,而现在,学了ASP.net,我相信你一定会酷爱ASP.net,而C#,可以直接建立ASP.net,其可视化界面也做得相当不错。 6. 组件编程:我只能告诉你,我从来没有见过可以向C#一样简单、快速、高效编写组件的开发语言,剩下的你自己猜想。 7. 数据库编程:在C#中 通过调用ADO.net对数据库进行读、写、查询等操作,C#编写数据库应用程序也一样简单。 8. 如此强大的功能,难怪微软声称,C#是编写.NET Framework 应用程序最合适的语言,本人也有同感。三、C# DirectX游戏编程基础 DirectX技术是微软公司推出一种基于WINDOWS下与硬件设备无关的多媒体及游戏编程技术,DirectX的出现,使WINDOWS下的多媒体及游戏编程变得容易,且性能有较大的提升,而且,DirectX不仅和WINDOWS驱动程序有良好的兼容,还能WINDOWS图形设备接口,即WINDOWS GDI兼容,在DirectX 9.0以前,通常只能在C+和VB中调用DirectX进行编程,但随着DirectX 9.0和DirectX9SDK的推出,在C#中进行DirectX编程非常简单,在本篇中,你将学习如何在C#中调用DirectX进行编程。 1. DirectX 9.0C和DirectX9SDK开发包的安装 要调试和编译本篇中的程序,必须先安装DirectX9.0C和 DirectX9SDK开发包,下面告诉你如何安装: (1)安装WindowsXp sp2操作系统,安装完毕后DirectX9.0C是默认已经安装,如果你的操作系统是其它版本的操作系统,那么需要单独安装DirectX9.0C。 (2)安装Microsoft Visual Studio .NET 2005版以上的编程工具。 (3)安装DirectX9SDK开发包,一共是两个安装程序:dx90asdk.exe和dxsdk_apr2005.exe,安装其中一个就可以了,安装完成后,我们就可以进行DirectX游戏编程了。 2. C# DirectDraw的使用方法 DirectDraw是DirectX的一个分枝,专门用于处理2D图形和平面图形,是一项非常好用的技术,Windows下几乎所有2D游戏,包括很多网络游戏都采用DirectDraw技术进行编程,因此,学好DirectDraw技术是游戏编程所必不可少的,下面,让我们一步步的学习如何使用DirectDraw进行编程。 (1) 对DirectDraw类进行引用:单击菜单“项目”“添加引用”“.NET”,选择“Microsoft.DirectX.DirectDraw”,单击“确定”。 (2) 在源代码中添加以下命名空间的引用:using Microsoft.DirectX;using Microsoft.DirectX.DirectDraw; 以上两行代码完成对DirectX和DirectDraw命名空间的引用,只有通过以上命名空间的引用,才能在程序对DirectDraw的编程。 (3) 定义DirectDraw设备并进行初始化:Device displayDevice = null; 此行代码把DirectDraw设备定义为displayDevice,并赋初始值为null,对DirectDraw设备进行定义并初始化后,在程序中就可以使用displayDevice代表DirectDraw进行工作了。 (4) 定义表面:Surface front = null; / 主表面.Surface back = null; / 后表面.Surface surfaceBmp = null; / 加载位图的离屏表面.Surface text = null; / 加载文字的离屏表面. 表面,搞过DirectDraw编程的人都知道,表面实际上是一个内存块,在上述代码中定义了四个表面,front主表面的内容是直接显示在显示器上,可以看得见的内容,back后表面的内容,不直接显示在显示器,后表面的内容只存储在内存中,后表面在内容要在显示器上显示,我们必须把后表面的内容拷贝到前表面中,或者采用翻转的办法将后表面变为主表面,后表面变为主表面后,内容当然显示中显示器中了,所以,在DirectDraw编程中,通常把后表面作为缓冲区,在后表面中进行图形处理,处理结束后再拷贝到主表面,或者向刚刚所说的,把后表面变为主表面,这样就可以避免由于复杂的图形处理过程在显示器上显示造成的闪烁,因为图形处理过程在后表面中进行。 surfaceBmp表面被定义为加载位图的离屏表面,同样也是一个内存块,text表面被定义为加载文字的离屏表面,也是一个内存块,如果我们要把surfaceBmp表面和text表面的内容同时在显示器中显示,我们应该怎么做呢,就是把surfaceBmp表面的内容先拷贝到后表面back中,再把text表面的内容拷贝到后表面back中,然后,把后表面的back内容拷贝到主表面front中,假设surfaceBmp表面是一幅位图,text表面中是文字,经过上述操作后,我们就可以在显示器看到图形和文字了。 (5) 创建DirectDraw设备: displayDevice = new Device();在我们把displayDevice定义为DirectDraw设备后,我们需要创建它,在C#中,创建DirectDraw设备就一行代码,非常的简单。 (6) 设置显示模式:displayDevice.SetCooperativeLevel(this, CooperativeLevelFlags.FullscreenExclusive); / 设置显示设备为当前窗口,且为全屏独占方式. displayDevice.SetDisplayMode(800,600,16,0,true); / 设置显示模式为800x600分辩率,颜色为16M色。玩过游戏的人都清楚,好多游戏都支持多种显示模式,现在大都数游戏都支持1024x768显示模式,而且可以切换窗口和全屏模式,那么,在实际编程中是如何实现的呢?上述代码应该给了你很好的回答。 (7) 设置透明色:ColorKey key = new ColorKey(); key.ColorSpaceHighValue = key.ColorSpaceLowValue =0; /设置颜色为黑色flags = ColorKeyFlags.SourceDraw;surfaceBmp.SetColorKey(flags, key); / 设置页面透明色. 在这里,有人肯定会问,何为透明色? 设置透明色有什么作用?别忙,让我告诉你,先请看下图: 这张图是一张90x90的位图,如果我们在图形处理时,不设置透明色,我们看到的跟上图一模一样,但如果在图形处理时,我设置透明色为此图的背景色(本图背景色为黑色),在图形处理时对这种颜色不进行处理,我们看到的图形就为下图 这样来举例,应该明白透明色的意义了吧,在游戏编程中,谁愿意看到那周围那些黑呼呼的东西呢,当然得把它处理掉。 (8) 加载位图: surfaceBmp = new Surface(bitmapFileName1, description, displayDevice);在游戏编程中,需要处理很多图形,如背景图,人物图形,花草树木等很多的图形,那么,这些图形是这样加载到程序中呢,上述代码很简单,那就是通过一个位图文件建立一个位图表面,bitmapFileName1变量为图形文件名,可以包含路径,description为表面,displayDevice为DirectDraw设备。 (9) 表面拷贝: 上面讲到,在图形处理中需要进行表面的拷贝操作,DirectDraw的表面拷贝操作非常简单,请看下面的代码。back.DrawFast(0,0,surfaceBmp, DrawFastFlags.DoNotWait | DrawFastFlags.SourceColorKey);/全图拷贝back.DrawFast(0,0,surfaceBmp,surRect,DrawFastFlags.DoNotWait | DrawFastFlags.SourceColorKey);/矩形拷贝back.DrawFast(30,40,text,DrawFastFlags.DoNotWait| DrawFastFlags.SourceColorKey);/不带透明色的拷贝 表面拷贝使用DrawFast方法,第一个参数为目标表面的X座标,第二个参数为目标表面的Y座标,第三个参数为要进行拷贝的表面,第四个参数决定拷贝整个表面或者是表面的一部分,第五个参数决定拷贝方式。 第一行代码作用是把surfaceBmp表面的全部内容拷贝到back表面座标0,0的地方,并对透明色进行处理。 第二行代码作用是把surfaceBmp表面的surRect矩形框指定的内容拷贝到back表面座标0,0的地方,并对透明色进行处理。 第三行代码作用是把text表面的全部内容拷贝到back表面座标30,40的地方,并对透明色进行处理。 (10) 表面翻转: 前面讲到,要将后表面的内容在显示器进行显示,需要将后表面翻转为主表面,表面翻转使用以下方法:front.Flip(back, FlipFlags.DoNotWait); 第一个参数为要翻转为主表面为表面,第二个参数为翻转模式。 上述代码把back表面翻转为主表面。 好了,说了这么多,让我们看一个DirectDraw的实例吧。using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;using Microsoft.DirectX;using Microsoft.DirectX.DirectDraw;namespace dxDraw/ / Form1 的摘要说明。/ public class Form1 : System.Windows.Forms.Formprivate System.ComponentModel.IContainer components;Device displayDevice = null; / Draw显示设备.Surface front = null; / 主表面.Surface back = null; / 后表面.Surface surfaceBmp = null; / 加载位图的离屏表面.Surface text = null; / 加载文字的离屏表面.private System.Windows.Forms.Timer timer1; / Palette entry array.string bitmapFileName1=black.bmp;int nx; /int ny;public Form1()/ Windows 窗体设计器支持所必需的/InitializeComponent();/ TODO: 在InitializeComponent 调用后添加任何构造函数代码/ / 清理所有正在使用的资源。/ protected override void Dispose( bool disposing )if( disposing )displayDevice.RestoreDisplayMode(); / 恢复设置displayDevice.SetCooperativeLevel(this,CooperativeLevelFlags.Normal);if (components != null) components.Dispose();base.Dispose( disposing );#region Windows 窗体设计器生成的代码/ / 设计器支持所需的方法- 不要使用代码编辑器修改/ 此方法的内容。/ private void InitializeComponent()ponents = new System.ComponentModel.Container();this.timer1 = new System.Windows.Forms.Timer(ponents);/ / timer1/ this.timer1.Interval = 10;this.timer1.Tick += new System.EventHandler(this.timer1_Tick);/ / Form1/ this.AutoScaleBaseSize = new System.Drawing.Size(21, 46);this.ClientSize = new System.Drawing.Size(292, 266);this.Font = new System.Drawing.Font(宋体, 30F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, (System.Byte)(134);this.Name = Form1;this.Text = Form1;this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);this.Load += new System.EventHandler(this.Form1_Load);#endregion/ / 应用程序的主入口点。/ STAThreadstatic void Main() Application.Run(new Form1();private void Form1_Load(object sender, System.EventArgs e)InitializeDirectDraw();private void InitializeDirectDraw()SurfaceDescription description=new SurfaceDescription(); /目标表面ColorKeyFlags flags = new ColorKeyFlags();displayDevice = new Device(); / 创建DirectDraw设备.displayDevice.SetCooperativeLevel(this, CooperativeLevelFlags.FullscreenExclusive); / 设置显示设备为当前窗口,且为全屏独占方式trydisplayDevice.SetDisplayMode(800,600,16,0,true); / 设置显示模式catch(UnsupportedException)MessageBox.Show(不支持当前的模式,请重新设置, 警告);Close();return;description.SurfaceCaps.PrimarySurface = description.SurfaceCaps.Flip = description.SurfaceCaps.Complex = true; description.BackBufferCount = 1; / 为目标表面建立一个后表面front = new Surface(description, displayDevice); / 创建基于description的主表面.SurfaceCaps caps = new SurfaceCaps();caps.BackBuffer = true; back = front.GetAttachedSurface(caps); / 从主表面获取后表面.description.Clear(); / 清除.surfaceBmp = new Surface(bitmapFileName1, description, displayDevice); / 通过位图创建离屏表面.ColorKey key = new ColorKey(); key.ColorSpaceHighValue = key.ColorSpaceLowValue =0; /设置颜色为黑色flags = ColorKeyFlags.SourceDraw;surfaceBmp.SetColorKey(flags, key); / 设置页面透明色.description.Clear();description.SurfaceCaps.OffScreenPlain = true;description.Width = 500; / 设置目标表面的宽度和高度description.Height = 40;text = new Surface(description, displayDevice); / 通过目标表面创建离屏表面text.ForeColor = Color.White; text.ColorFill(0);text.FontHandle=this.Font.ToHfont(); /设置字体为当前窗口的字体text.DrawText(0, 0,按Esc键退出,A键动画演示, false);text.SetColorKey(flags,key); / 设置页面透明色.Rectangle surRect=new Rectangle(0,0,600,400); back.ColorFill(144);/back.DrawFast(0,0,surfaceBmp, DrawFastFlags.DoNotWait | DrawFastFlags.SourceColorKey);/全图拷贝back.DrawFast(0,0,surfaceBmp,surRect,DrawFastFlags.DoNotWait | DrawFastFlags.SourceColorKey);/矩形拷贝back.DrawFast(30,40,text,DrawFastFlags.DoNotWait| DrawFastFlags.SourceColorKey);/不带透明色的拷贝back.FontHandle=this.Font.ToHfont(); /设置字体为当前窗口的字体back.ForeColor=Color.Red; back.DrawText(0,0,CLS,false); front.Flip(back, FlipFlags.DoNotWait); private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)if (e.KeyCode=Keys.Escape)Close();if(e.KeyCode=Keys.A)timer1.Enabled=true; private void timer1_Tick(object sender, System.EventArgs e)nx=nx+1;back.ColorFill(144);back.DrawFast(0,0,surfaceBmp, DrawFastFlags.DoNotWait | DrawFastFlags.SourceColorKey);/back.DrawFast(30,nx,text,DrawFastFlags.DoNotWait| DrawFastFlags.SourceColorKey);back.DrawText(nx,0,CLS,false);front.Flip(back, FlipFlags.DoNotWait); 3. C# DirectX.AudioVideoPlayback的使用方法 看到这个类,是不是感到很熟悉,对了,这个类是DirectX分支中用于播放多媒体文件的类,功能非常的强大,不过,功能强大,使用却不难啊。 (1) 对DirectX.AudioVideoPlayback类进行引用:单击菜单“项目”“添加引用”“.NET”,选择“Microsoft.DirectX.AudioVideoPlayback”,单击“确定”。 (2) 在源代码中添加以下命名空间的引用:using Microsoft.DirectX;using Microsoft.DirectX.AudioVideoPlayback; 以上两行代码完成对DirectX和 Microsoft.DirectX.AudioVideoPlayback命名空间的引用,只有通过以上命名空间的引用,才能在程序中对Microsoft.DirectX.AudioVideoPlayback的编程。 (3) 定义Audio设备并进行初始化:private Audio ourAudio = null;此行代码把Audio设备定义为ourAudio,并赋初始值为null,对Audio设备进行定义并初始化后,在程序中就可以使用ourAudio代表Audio进行工作了,接下来的过程,让你想象不到的简单。 (4) 以带路径的媒体文件名创建一个新的ourAudio对象,请看下面的代码:openFileDialog1.ShowDialog();ourAudio = new Audio(openFileDialog1.FileName); 这样的代码相信你并不会感到惊奇,是不是再熟悉不过了。 (5) 接下来,看看下面的代码,你应该什么都明白了吧:ourAudio.Volume=0; /设置音量,最大值为0;ourAudio.Play(); /播放ourAudio.Stop(); /停止 (6) 当然,看一下完整的代码更能理解,下面是播放媒体文件的完整代码,对了,别忘 了前面所说的对DirectX.AudioVideoPlayback类进行引用啊。using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;using Microsoft.DirectX;using Microsoft.DirectX.AudioVideoPlayback;namespace AudioPlay/ / Form1 的摘要说明。/ public class Form1 : System.Windows.Forms.Form/ / 必需的设计器变量。/ private System.ComponentModel.Container components = null;private System.Windows.Forms.OpenFileDialog openFileDialog1;private System.Windows.Forms.Button button1;private System.Windows.Forms.Button button2;private Audio ourAudio = null;private string filterText = Audio files (*.wav; *.mpa; *.mp2; *.mp3; *.au; *.aif; *.aiff; *.snd; *.wma)|*.wav; *.mpa; *.mp2; *.mp3; *.au; *.aif; *.aiff; *.snd; *.wma| +MIDI Files (*.mid, *.midi, *.rmi)|*.mid; *.midi; *.rmi| +All Files (*.*)|*.*;public Form1()/ Windows 窗体设计器支持所必需的/InitializeComponent();/ TODO: 在InitializeComponent 调用后添加任何构造函数代码/ / 清理所有正在使用的资源。/ protected override void Dispose( bool disposing )if( disposing )if (components != null) components.Dispose();base.Dispose( disposing );#region Windows 窗体设计器生成的代码/ / 设计器支持所需的方法- 不要使用代码编辑器修改/ 此方法的内容。/ private void InitializeComponent()this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();this.button1 = new System.Windows.Forms.Button();this.button2 = new System.Windows.Forms.Button();this.SuspendLayout();/ / button1/ this.button1.Location = new System.Drawing.Point(16, 72);this.button1.Name = button1;this.button1.Size = new System.Drawing.Size(80, 24);this.button1.TabIndex = 0;this.button1.Text = 播放;this.button1.Click += new System.EventHandler(this.button1_Click);/ / button2/ this.button2.Location = new System.Drawing.Point(136, 72);this.button2.Name = button2;this.button2.Size = new System.Drawing.Size(96, 24);this.button2.TabIndex = 1;this.button2.Text = 停止;this.button2.Click += new System.EventHandler(this.button2_Click);/ / Form1/ this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);this.ClientSize = new System.Drawing.Size(292, 266);this.Controls.Add(this.button2);this.Controls.Add(this.button1);this.Name = Form1;this.Text = Form1;this.Load += new System.EventHandler(this.Form1_Load);this.ResumeLayout(false);#endregion/ / 应用程序的主入口点。/ STAThreadstatic void Main() Application.Run(new Form1();private void button1_Click(object sender, System.EventArgs e)openFileDialog1.ShowDialog();ourAudio = new Audio(openFileDialog1.FileName);ourAudio.Volume=0; /设置音量,最大值为0;ourAudio.Play(); /播放private void button2_Click(object sender, System.EventArgs e)ourAudio.Stop(); /停止private void Form1_Load(object sender, System.EventArgs e)openFileDialog1.Filter=filterText; 上面这个实例可以播放WAV、MIDI、MP3等很多音乐文件,因此,还怕在程序中播放背景音乐吗? 4. C# Microsoft.DirectX.DirectSound的使用方法 DirectSound又为何物,熟悉DirectX编程的人应该很明白,对了,这个类是DirectX 分支中专门用于播放WAV文件的类,使用同样的简单,对了,有人要问了,AudioVideoPlayback类不是可以播放WAV文件吗,那么,要DirectSound干什么呢,在此,我只能说,萝卜青菜,各有所爱,能说的,还是说一点吧,下面还是来看一看DirectSound的使用。 (1) 对DirectX.DirectSound类进行引用:单击菜单“项目”“添加引用”“.NET”,选择“Microsoft.DirectX.DirectSound”,单击“确定”。 (2) 在源代码中添加以下命名空间的引用:using Microsoft.DirectX;using Microsoft.DirectX.DirectSound; 以上两行代码完成对DirectX和 Microsoft.DirectX. DirectSound命名空间的引用,只有通过以上命名空间的引用,才能在程序中对Microsoft.DirectX.DirectSound的编程。 (3) 定义DirectSound设备并进行设置:Device dv=new Device();dv.SetCooperativeLevel(this,CooperativeLevel.Priority); 第一行代码把DirectSound设备定义为dv,第二行代码对定义好的DirectSound设备进行设置,接下来的过程,同样的简单。 (4) 定义DirectSound设备的文件对象SecondaryBuffer buf; (5) 以带路径的媒体文件名创建一个新的DirectSound对象,请看下面的代码:buf=new SecondaryBuffer(Blip.wav,dv); (6) 接下来,看看下面的代码,是不是和AudioVideoPlayback有点不同。buf.Volume=0; /设置音量,最大值为0buf.Pan=10000;/设置左、右声道音量平衡,负值为左声道,正值为右声道buf.Play(0,BufferPlayFlags.Looping); /循环播放buf.Play(0,BufferPlayFlags.Default); /播放一次buf.Stop();/停止 (7) 还是来看一看这个实例的完整代码吧。using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;using Microsoft.DirectX; using Microsoft.DirectX.DirectSound;namespace dxSndplay/ / Form1 的摘要说明。/ public class Form1 : System.Windows.Forms.Formprivate System.Windows.Forms.Button button1;private System.Windows.Forms.Button button2;/ / 必需的设计器变量。/ private System.ComponentModel.Container components = null;private System.Windows.Forms.Label label1;SecondaryBuffer buf;public Form1()/ Windows 窗体设计器支持所必需的/InitializeComponent();/ TODO: 在InitializeComponent 调用后添加任何构造函数代码/ / 清理所有正在使用的资源。/ protected override void Dispose( bool disposing )if( disposing )if (components != null) components.Dispose();base.Dispose( disposing );#region Windows 窗体设计器生成的代码/ / 设计器支持所需的方法- 不要使用代码编辑器修改/ 此方法的内容。/ private void InitializeComponent()this.button1 = new System.Windows.Forms.Button();this.button2 = new System.Windows.Forms.Button();this.label1 = new System.Windows.Forms.Label();this.SuspendLayout();/ / button1/ this.button1.Location = new System.Drawing.Point(40, 72);this.button1.Name = button1;this.button1.Size = new System.Drawing.Size(72, 24);this.button1.TabIndex = 0;this.button1.Text = 播放;this.button1.Click += new System.EventHandler(this.button1_Click);/ / button2/ this.button2.Location = new System.Drawing.Point(40, 128);this.button2.Name = button2;this.button2.Size = new System.Drawing.Size(80, 24);this.button2.TabIndex = 1;this.button2.Text = 停止;this.button2.Click += new System.EventHandler(this.button2_Click);/ / label1/ this.label1.Location = new System.Drawing.Point(160, 80);this.label1.Name = label1;this.label1.Size = new System.Drawing.Size(96, 24);this.label1.TabIndex = 2;this.label1.Text = label1;/ / Form1/ this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);this.ClientSize = new System.Drawing.Size(292, 266);this.Controls.Add(this.label1);this.Controls.Add(this.button2);this.Controls.Add(this.button1);this.Name = Form1;this.Text = Form1;this.ResumeLayout(false);#endregion/ / 应用程序的主入口点。/ STAThreadstatic void Main() Application.Run(new Form1();private void button1_Click(object sender, System.EventArgs e)Device dv=new Device();dv.S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 28857-2025差动变压器式位移传感器
- 2025年宁夏安全员A考试核心难点题及答案
- 2025年新媒体运营师专业技能考核模拟题及答案
- 2025年电子商务运营经理面试技巧与模拟题
- 草坪园艺技术使用中常见问题解析
- 2025年全国会计从业资格考试试题及答案解析
- 2025年汽车维修技师技能培训考试试题及答案解析
- 2025年大学生安全教育考试题库及答案解析
- 2025年平面设计师职业技能认证考试试题及答案解析
- 2025年篮球教练师资格考试试题及答案解析
- 2025年科研项目经理专业知识考试题目答案解析
- 2025广东肇庆市怀集县卫生事业单位招聘102人笔试模拟试题及答案解析
- 青马考试题目及答案
- 2024-2025学年广东省深圳市南山区四年级(下)期末数学试卷
- 算力中心计算任务优化方案
- 劳务派遣工作知识培训课件
- AutoCAD电气工程制图 课件 项目1 低压配电柜的绘制与识图
- 无人机反制设备原理课件
- 北京市2025年普通高中学业水平等级性考试政治试题(解析版)
- 2025年村干部考试试题(含答案)
- 新华书店招聘面试题库全攻略:行业知识、技能与面试技巧
评论
0/150
提交评论