Wpf 具有自动缩放功能的简单绘图算法

Wpf 具有自动缩放功能的简单绘图算法,wpf,plot,Wpf,Plot,为了更精确,我需要在CWPF中实现一个简单的绘图组件。我拥有的是一组数据样本,其中包含时间X轴和一个值,这两种类型都是双精度的 我有一个固定大小的绘图画布,宽度x高度,以及一个可以在上面绘图的绘图线方法/函数。我现在面临的问题是如何绘制绘图以便自动缩放?换言之,如何将样本映射到宽度x高度画布上的实际像素?一种可能有效的方法是使用Viewbox控件。此控件将缩放其内容的呈现以适合可用大小。但是,这可能会导致线条和标签看起来太粗或太薄 不过,您可能追求的更明智的方法是,如何首先计算出绘制图形的比例。

为了更精确,我需要在CWPF中实现一个简单的绘图组件。我拥有的是一组数据样本,其中包含时间X轴和一个值,这两种类型都是双精度的


我有一个固定大小的绘图画布,宽度x高度,以及一个可以在上面绘图的绘图线方法/函数。我现在面临的问题是如何绘制绘图以便自动缩放?换言之,如何将样本映射到宽度x高度画布上的实际像素?

一种可能有效的方法是使用Viewbox控件。此控件将缩放其内容的呈现以适合可用大小。但是,这可能会导致线条和标签看起来太粗或太薄

不过,您可能追求的更明智的方法是,如何首先计算出绘制图形的比例。为此,计算给定轴上的值范围。例如,Y轴的值可能在0到100之间。计算该轴上的可用绘图空间例如,画布的高度可能为400像素。绘制图形时,Y轴比例因子应为/-或在本例中为4

画布的坐标从左上角的零开始,因此,要计算给定数据点的Y位置,请按如下方式计算:

double availableSpace = 400.0; // the size of your canvas
double dataRange = 100.0;      // the range of your values
double scaleFactor = availableSpace / dataRange;

double currentValue = 42.0;    // the value we're trying to plot
double plottableY = availableSpace - (currentValue * scaleFactor);  // the position on screen to draw at
plottableY的值是用于在画布上绘制该点的y坐标

显然,这段代码需要在整个绘图方法中展开,这样您就不会重新计算每个点的所有值,但它演示了数学