DrawingSurface Draw事件不启动
本文关键字:启动 事件 Draw DrawingSurface | 更新日期: 2023-09-27 18:23:59
我正在开发Silverlight应用程序,并尝试在我的应用程序中使用3D支持。我已经启用了这条线的3D支持:
<param name="enableGPUAcceleration" value="true" />
此外,该应用程序通过IIS在localhost:80上运行,并且其3D使用权限设置为Allow。
我在xaml页面中有一个DrawingSurface,并附加了它的Draw事件,在该事件中,我只需将曲面清除为红色。Draw不会触发。因此,我尝试使鼠标左键向下的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();
}
}
在调试模式下检查时,我发现MouseLeftButtonDown事件确实启动了。GraphicsDeviceManager.CurrentRenderMode设置为RenderMode.Hardware,并执行Invalidate()方法。但是,Draw事件仍然没有启动。
我创建了一个测试项目,它通过特定端口(50814)上的Developer服务器运行。同样,enableGPUAcceleration设置为true,permission设置为Allow。此测试项目确实启动Draw事件。
所以。。。我的大型应用程序在IIS服务器(localhost:80)上运行,enableGPUAcceleration设置为true,权限设置为Allow,不会触发Draw事件。一个简单的测试项目在端口50814上运行Developer服务器,enableGPUAcceleration设置为true,permission设置为Allow,会触发Draw事件。
我不知道如何为我的应用程序启用3D。你们有什么建议吗?!
您的代码只让draw函数工作一次,为了使其连续工作,draw事件应该是这样的:
public void drawingsurface_draw(object sender, DrawEventArgs e)
{
//do some thing here
e.InvalidateSurface();
}