gpt4 book ai didi

c# - 为什么使用带破折号图案的笔会导致 WPF 自定义 2D 绘图中出现巨大(!)性能下降?

转载 作者:太空狗 更新时间:2023-10-30 00:06:45 28 4
gpt4 key购买 nike

希望任何人都可以阐明这一点,以便我可以使用带有破折号图案的笔?

我正在使用 DrawingVisual 在 WPF 中编写可滚动图表(ScrollViewer 中的 Panel 实现 IScrollInfo)的 DataContext.DrawX。我有几千个 DrawingVisual,它们通过在承载它们的 Panel 上使用 TranslateTransform 来滚动。我通过在其顶部放置一个 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>

最佳答案

这是一个可能的解决方法 - 如果您只绘制水平和/或垂直线,您可以尝试使用方格图案 DrawingBrush 创建您的 Pen,例如:

  <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 以获得更好的性能。

关于c# - 为什么使用带破折号图案的笔会导致 WPF 自定义 2D 绘图中出现巨大(!)性能下降?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/537950/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com