我正在使用 XAML / C# 开发一个 Windows 应用商店应用程序。该应用程序还有一个 Windows 运行时组件,用于使用 DirectX 显示图表输出。
我正在使用 SwapChainPanel 方法来绘制线条(x 轴、y 轴和波形)。
我从下面的 MSDN 示例中选择了这种方法(参考场景 3 - D2DPanel) http://code.msdn.microsoft.com/windowsapps/XAML-SwapChainPanel-00cb688b
这是我的问题,我的波形包含大量数据(从 1,000 到 20,000 组点)。在每次Render函数调用期间,我都在为所有这些点连续调用 DrawLine 。
该控件还提供平移和缩放,但保持 StrokeWidth 不变而与缩放级别无关,因此可见区域(渲染目标)可能远小于我正在绘制的线条。
为将要离开屏幕的区域调用 DrawLine 会导致性能问题吗?
我尝试了 PathGeometry & GeometryRealization 但我无法在各种缩放级别控制 StrokeWidth。
我的 Render 方法通常类似于以下代码段。lineThickness 被控制为相同,与缩放级别无关。
m_d2dContext->SetTransform(m_worldMatrix);
float lineThickness = 2.0f / m_zoom;
for (unsigned int i = 0; i < points->Size; i += 2)
{
double wavex1 = points->GetAt(i);
double wavey1 = points->GetAt(i + 1);
if (i != 0)
{
m_d2dContext->DrawLine(Point2F(prevX, prevY), Point2F(wavex1, wavey1), brush, lineThickness);
}
prevX = wavex1;
prevY = wavey1;
}
我对 DirectX 有点陌生,但对 C++ 不熟悉。有什么想法吗?