Autor Beitrag
C#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: Mi 06.07.16 09:48 
Hey @ll,

hat sich zufällig schon mal jemand intensiver mit dem clipping in WPF beschäftigt? Ich versuche gerade herauszufinden, wie man die beste Performance beim clippen bekommt.
In meinem Fall habe ich eine Canvas die in einem Viewport liegt (einem eigenen Viewport, keine Viewbox!). In dieser Canvas wird ein sehr komplexes Geometry-Objekt gerendert. Dies übernimmt der DrawingContext der OnRender Methode (welche ich überschreibe).

Da der Viewport nicht immer die ganze Canvas anzeigt, sondern z.B. mal auf einen Ausschnitt reinzoomt, wird viel außerhalb des sichtbaren Bereichs gerendert. Dies sollte sich ja durch korrektes clippen verhindern lassen.

Die Frage ist jetzt nur: wie clippe ich?

1. Über die Clip-Property der Canvas
2. Über die DrawingContext.PushClip(...) Methode
3. Durch die Schnittmenge meines Geometry-Objekts mit dem Clip-Objekt

In meinem Fall geht es nur um Performance, d.h. wie rendere ich möglichst schnell. Ich dachte ich frage mal hier im Forum bevor ich alle 3 Verfahren genauer untersuche. Vielleicht hat sich ja schonmal jemand damit befasst.

// Nachtrag
Ich muss die Canvas sehr oft rendern, da das Geometry-Objekt mit der Maus gezeichnet wird (so ähnlich wie der Pinsel in Paint)

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler