主题:[讨论]c#Direct学习第一步奏
这个是小弟初次学c#里的DIRECTX编程的第一步,当然这仅仅是第一步,主要是看了半天的书没看懂(全部是英文的,但是本人英语不怎么样),原来需要自己创建一个编程的摸板,小弟就照着书开始长征了.首先第一步是创建一个C#的WINDOWS应用程序.我这个是VS2005试用版本.中文版本.
创建完毕后
在引用上面单击右键添加引用,选择Microsoft.DirectX;Microsoft.DirectX.Direct3D;
然后在FORM1上点击右键查看代码,然后就按照我这个输入
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;
namespace direct
{
public partial class directx : Form
{
Device device = null;
public directx()
{
InitializeComponent();
}
public bool InitializeGraphics()
{
try
{
PresentParameters presentParams = new PresentParameters();
presentParams.Windowed = true;
presentParams.SwapEffect = SwapEffect.Discard;
device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams);
device.DeviceLost += new EventHandler(this.InvalidateDeviceObjects);
device.DeviceReset += new EventHandler(this.RestoreDeviceObjects);
device.Disposing += new EventHandler(this.DeleteDeviceObjects);
device.DeviceResizing += new CancelEventHandler(this.EnvironmentResizeing);
return true;
}
catch (DirectXException)
{
return false;
}
}
protected virtual void InvalidateDeviceObjects(object sender, EventArgs e)
{ }
protected virtual void RestoreDeviceObjects(object sender, EventArgs e)
{ }
protected virtual void DeleteDeviceObjects(object sender, EventArgs e)
{ }
protected virtual void EnvironmentResizeing(object sender, CancelEventArgs e)
{ }
protected virtual void FrameMove()
{ }
protected virtual void Render()
{
if (device != null)
{
device.Clear(ClearFlags.Target, Color.Blue, 1.0f, 0);
device.BeginScene();
device.EndScene();
device.Present();
}
}
public void Run()
{
while (Created)
{
FrameMove();
Render();
Application.DoEvents();
}
}
protected override void OnPaint(PaintEventArgs e)
{
this.Render();
}
protected override void OnKeyPress(KeyPressEventArgs e)
{
base.OnKeyPress(e);
if ((int)e.KeyChar == (int)System.Windows.Forms.Keys.Escape)
{
this.Close();
}
}
}
}
创建完毕后
在引用上面单击右键添加引用,选择Microsoft.DirectX;Microsoft.DirectX.Direct3D;
然后在FORM1上点击右键查看代码,然后就按照我这个输入
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;
namespace direct
{
public partial class directx : Form
{
Device device = null;
public directx()
{
InitializeComponent();
}
public bool InitializeGraphics()
{
try
{
PresentParameters presentParams = new PresentParameters();
presentParams.Windowed = true;
presentParams.SwapEffect = SwapEffect.Discard;
device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams);
device.DeviceLost += new EventHandler(this.InvalidateDeviceObjects);
device.DeviceReset += new EventHandler(this.RestoreDeviceObjects);
device.Disposing += new EventHandler(this.DeleteDeviceObjects);
device.DeviceResizing += new CancelEventHandler(this.EnvironmentResizeing);
return true;
}
catch (DirectXException)
{
return false;
}
}
protected virtual void InvalidateDeviceObjects(object sender, EventArgs e)
{ }
protected virtual void RestoreDeviceObjects(object sender, EventArgs e)
{ }
protected virtual void DeleteDeviceObjects(object sender, EventArgs e)
{ }
protected virtual void EnvironmentResizeing(object sender, CancelEventArgs e)
{ }
protected virtual void FrameMove()
{ }
protected virtual void Render()
{
if (device != null)
{
device.Clear(ClearFlags.Target, Color.Blue, 1.0f, 0);
device.BeginScene();
device.EndScene();
device.Present();
}
}
public void Run()
{
while (Created)
{
FrameMove();
Render();
Application.DoEvents();
}
}
protected override void OnPaint(PaintEventArgs e)
{
this.Render();
}
protected override void OnKeyPress(KeyPressEventArgs e)
{
base.OnKeyPress(e);
if ((int)e.KeyChar == (int)System.Windows.Forms.Keys.Escape)
{
this.Close();
}
}
}
}