DrawingSurface Draw事件不会触发

时间:2012-02-08 16:04:18

标签: c# silverlight

我正在开发Silverlight应用程序,并尝试在我的应用程序中使用3D支持。我用这条线启用了3D支持:

<param name="enableGPUAcceleration" value="true" />

此外,该应用程序通过IIS在localhost:80上运行,并且具有将3D使用设置为“允许”的权限。

我在xaml页面中有一个DrawingSurface并附加了Draw事件,我只需将表面清除为红色。平局不会开火。所以我尝试在MouseLeftButtonDown上使DrawingSurface无效。这是一些代码:

        private void TestDrawing_Draw(object sender, System.Windows.Controls.DrawEventArgs e)
    {
        GraphicsDeviceManager.Current.GraphicsDevice.Clear(new Microsoft.Xna.Framework.Color(255, 0, 0));
    }

    private void TestDrawing_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {
        if (GraphicsDeviceManager.Current.RenderMode == RenderMode.Hardware)
        {
            TestDrawing.Invalidate();
        }
    }

检入debugmode,我发现MouseLeftButtonDown事件会触发。 GraphicsDeviceManager.Current.RenderMode设置为RenderMode.Hardware,并执行Invalidate()方法。但是,Draw事件仍然没有发生。

我创建了一个testproject,它通过特定端口上的Developer服务器运行(50814)。同样,enableGPUAcceleration设置为true,权限已设置为Allow。这个测试项目会触发Draw事件。

所以...我的大型应用程序,在IIS服务器(localhost:80)上运行,其中enableGPUAcceleration设置为true,权限设置为Allow不会触发Draw事件。在端口50814上运行Developer服务器的简单测试项目,其中enableGPUAcceleration设置为true,允许权限允许触发Draw事件。

我不知道如何为我的应用程序启用3D。你们有什么建议吗?!

1 个答案:

答案 0 :(得分:0)

你的代码只有一次绘制函数,为了让它连续工作,绘制事件应该是这样的:

 public void drawingsurface_draw(object sender, DrawEventArgs e)
    {
    //do some thing here
    e.InvalidateSurface();
    }