我想绘制一个波形。 我有一个预先计算好的数据点数量(例如1000)。 我想用波形填充画布控件的全部宽度。 因此我必须重新计算绘制的每个数据点的宽度。画布线条重叠带双值创建莫尔效应
为此,我尝试将StrokeThickness设置为总宽度除以数据点的nr。 (例如0.35629)和每0.35629像素打印0.35629像素宽的线。
这会产生不希望的莫尔效应。
对我来说,StrokeThickness是一个双倍的感觉很奇怪,因为WPF将如何绘制一个0.35629像素宽的线?
下面的代码示例显示我的意思。上半场没问题,下半场有莫尔效应。
这是要走的路吗还是我需要另一种方法?
for (int i = 0; i < 500; i++)
{
Line line = new Line();
line.X1 = i;
line.X2 = i;
line.Y1 = 0;
line.Y2 = 100;
line.Stroke = new SolidColorBrush(Colors.Black);
line.StrokeThickness = 1;
this.demoCanvas.Children.Add(line);
}
const double canvasWidth = 525;
const double nrOfDatapoints = 500d;
const double pixelsPerPoint = canvasWidth/nrOfDatapoints ;
double x = 500;
for (int i = 0; i < nrOfDatapoints; i++)
{
Line line = new Line();
line.X1 = x;
line.X2 = x;
line.Y1 = 0;
line.Y2 = 100;
line.Stroke = new SolidColorBrush(Colors.Black);
line.StrokeThickness = pixelsPerPoint;
this.demoCanvas.Children.Add(line);
x += pixelsPerPoint;
}
您可以将画布设置为静态大小,然后将画布放入另一个容器并允许容器缩放它吗?我不确定这是否会解决问题,或者只是做出不同的问题。 – CodingGorilla
这并不能解决我的问题,因为我也在画布上“绘画”文本,我不想让它变形。 –