这是一段移动图片的代码
图片是64*64的。
private void panel1_Paint(object sender, PaintEventArgs e)
{
string file = @"D:\d.JPG";
int a = 0;
if (a == 0)
{
for (int i = 0; i < 500; i++)
{
Draw.DrawImage(file, panel1,i,0);//自己用dx封装的一个简单的类
Application.DoEvents();
}
}
else
{
for (int i = 0; i < 500; i++)
{ e.Graphics.DrawImage(Image.FromFile(file), i, 0);
Application.DoEvents();
}
}
前者是DX绘图。后者是GDI+。
但是在移动速度上后者比前者快好几倍~~
是不是我的代码有什么地方不对?这是draw.drawImage的代码:
public static void DrawImage(String File, Control control,int x,int y)
{
pp.Windowed = true;
pp.SwapEffect = SwapEffect.Discard;
de = new Device(0, DeviceType.Hardware, control, CreateFlags.HardwareVertexProcessing, pp);
sp = new Sprite(de);
te = TextureLoader.FromFile(de, File);
de.BeginScene();
de.Clear(ClearFlags.Target, Color.White, 1.0f, 0);
sp.Begin(SpriteFlags.AlphaBlend);
sp.Draw(te, Vector3.Empty, new Vector3(x, y, 0), Color.White.ToArgb());
sp.End();
de.EndScene();
de.Present();
te.Dispose();
de.Dispose();
sp.Dispose();
}
图片是64*64的。
private void panel1_Paint(object sender, PaintEventArgs e)
{
string file = @"D:\d.JPG";
int a = 0;
if (a == 0)
{
for (int i = 0; i < 500; i++)
{
Draw.DrawImage(file, panel1,i,0);//自己用dx封装的一个简单的类
Application.DoEvents();
}
}
else
{
for (int i = 0; i < 500; i++)
{ e.Graphics.DrawImage(Image.FromFile(file), i, 0);
Application.DoEvents();
}
}
前者是DX绘图。后者是GDI+。
但是在移动速度上后者比前者快好几倍~~
是不是我的代码有什么地方不对?这是draw.drawImage的代码:
public static void DrawImage(String File, Control control,int x,int y)
{
pp.Windowed = true;
pp.SwapEffect = SwapEffect.Discard;
de = new Device(0, DeviceType.Hardware, control, CreateFlags.HardwareVertexProcessing, pp);
sp = new Sprite(de);
te = TextureLoader.FromFile(de, File);
de.BeginScene();
de.Clear(ClearFlags.Target, Color.White, 1.0f, 0);
sp.Begin(SpriteFlags.AlphaBlend);
sp.Draw(te, Vector3.Empty, new Vector3(x, y, 0), Color.White.ToArgb());
sp.End();
de.EndScene();
de.Present();
te.Dispose();
de.Dispose();
sp.Dispose();
}
移动panel的坐标不行吗?
你现在的代码跟我以前写的代码原理好像完全不同!你现在的写法是慢的电脑运行慢,快的电脑运行快,但不会出现跳贴的情况。