C# CompositionTarger.Rendering(WPF)上的渲染有多差
我正在使用WPF创建CAD应用程序。 我想实现如下的渲染循环C# CompositionTarger.Rendering(WPF)上的渲染有多差,c#,wpf,C#,Wpf,我正在使用WPF创建CAD应用程序。 我想实现如下的渲染循环 public class Editor { private DrawingGroup RenderGroup = new DrawingGroup(); protected override void OnRender(DrawingContext drawingContext) { base.OnRender(drawingContext); var dc = draw
public class Editor
{
private DrawingGroup RenderGroup = new DrawingGroup();
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
var dc = drawingContext;
Render();
dc.DrawDrawing(RenderGroup);
}
void Render()
{
//All Render goes here, for example
for (int i=0; i<25;i++)
{
dc.DrawRenctagle.....
}
}
public Editor()
{
CompositionTarget.Rendering += CompositionTarget_Rendering;
}
void CompositionTarget_Rendering(object sender, EventArgs e)
{
Render();
}
}
公共类编辑器
{
private DrawingGroup RenderGroup=新建DrawingGroup();
受保护的重写void OnRender(DrawingContext DrawingContext)
{
base.OnRender(drawingContext);
var dc=drawingContext;
Render();
dc.DrawDrawing(RenderGroup);
}
void Render()
{
//例如,所有渲染都在这里进行
对于(int i=0;iVery bad,IMO。渲染事件处理程序在每一帧上都被调用,即每秒最多调用60次。OnRender
通常在必要时被调用。如果要设置动画,请使用。您是否注意到我正在调用just Render。在绘图组中,哪个渲染事件处理程序实际上没有调用OnrRender或Invalidate?这应该是不同的是,我错了吗?我当然错了。但是,你没有解释你到底要在那里做什么,以及为什么常规动画无法实现。总之,“有多糟糕”正在征求意见。对于菜单、按钮、面板、弹出窗口等UI内容,可以使用WPF。但我不会尝试使用WPF编写类似CAD的软件。也是这样。不确定3d部分有多好,但您可以始终使用位图渲染内容(使用gdi+或某些库)并简单地显示位图。不需要渲染器。我直接绘制到drawingContext以获得“更高的性能”,而不是将形状作为子对象使用,因此我不能使用默认的故事板,因为没有触发器、属性或类似的东西。