希望有人能阐明这一点,以便我可以使用带有破折号图案的笔?
我正在写一个可滚动的图表(Panel
inside ScrollViewer
实现IScrollInfo
) 在 WPF 中使用DrawingVisual
's DataContext.Draw
X。我有几千DrawingVisual
通过使用滚动的 sTranslateTransform
on the Panel
接待他们的地方。我通过放置一个网格来实现Panel
在它的顶部并使用从一个边缘到另一边缘绘制简单的水平线DataContext.DrawLine(pen, new Point(0, y), new Point(widthOfPanel, y));
//(注意:这些线始终是静态的,它们从不移动)。
滚动性能绝对是疯狂的(即 DrawingVisual 是立即绘制的并且滚动是即时的)。但如果我使用Pen
使用破折号图案(例如见下文)来绘制网格线,然后滚动非常不稳定,并且性能似乎下降了 100 倍(估计值)。谁能解释为什么会发生这种情况以及我如何解决这个问题?
带破折号图案的笔示例:
<Pen x:Key="PenUsingDashPatterns" Brush="Black" Thickness="1">
<Pen.DashStyle >
<DashStyle Dashes="3, 3" />
</Pen.DashStyle>
</Pen>
这是一个可能的解决方法 - 如果您只绘制水平和/或垂直线,您可以尝试创建您的Pen
带有格子图案DrawingBrush
例如:
<Pen x:Key="PenUsingDashPatterns" Thickness="1">
<Pen.Brush>
<DrawingBrush TileMode="Tile"
Viewport="0 0 6 6" ViewportUnits="Absolute">
<DrawingBrush.Drawing>
<GeometryDrawing Brush="Black">
<GeometryDrawing.Geometry>
<GeometryGroup>
<RectangleGeometry Rect="0 0 3 3"/>
<RectangleGeometry Rect="3 3 3 3"/>
</GeometryGroup>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingBrush.Drawing>
</DrawingBrush>
</Pen.Brush>
</Pen>
或者,您可以对垂直线和水平线使用不同的画笔,或者可能使用ImageBrush
为了更好的性能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)