我想在C#中学习WPF
我发现WPF允许我将“矩形”对象“添加”到画布上,以便正确显示它们.但是,我有时会画出数十万个矩形,并且绘制速度会变得非常慢,当我移动一个矩形时,UI变得不那么活泼.
在winForms中直接绘制到元素上并不是很快,但无论我绘制多少,它都是一致的.
在WPF中有这样的解决方案吗?
我尝试将一个linq添加到System.Drawing,它给了我一个Graphics对象,但我试过的wpf元素都没有.CreateGraphics()方法.
解决方法 您需要创建一个覆盖 OnRender的控件并在那里进行绘制.没有办法让你绘制另一个控件,但控件可以绘制自己.此外,请记住,WPF使用retained graphics,因此如果您更改了某些内容,则需要根据需要使视觉无效.
编辑:
就像是:
public class MyControl : Control { public MyControl() { this.Rects = new ObservableCollection<Rect>(); // Todo: attach to CollectionChanged to kNow when to invalIDate visual } public ObservableCollection<Rect> Rects { get; private set; } protected overrIDe voID OnRender(DrawingContext dc) { SolIDcolorBrush mySolIDcolorBrush = new SolIDcolorBrush(); mySolIDcolorBrush.color = colors.limeGreen; Pen myPen = new Pen(Brushes.Blue,10); foreach (Rect rect in this.Rects) dc.DrawRectangle(mySolIDcolorBrush,myPen,rect); }}总结
以上是内存溢出为你收集整理的c# – wpf中的等效CreateGraphics全部内容,希望文章能够帮你解决c# – wpf中的等效CreateGraphics所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)