Из этого сделать c: CanvasDrawingSession.FillRectangle Method и ваш следующий код:
args.DrawingSession.FillRectangle(start , (float)(canvas.ActualHeight * (1 - total / range)), ColumnWidth, (float)(canvas.ActualHeight * (total / range)), Colors.Green);
Мы можем знать, что ширина для одной строки равна ColumnWidth , тогда из приведенного ниже определения:
private float ColumnWidth => (float)(40 * ColumnAvgDataRange * 0.01);
Мы можем знать, что ColummWidth равно 40, поэтому для того, чтобы ваш код отображал только одну строку, первый метод заключается в установите для параметра Width CanvasControl только одну строку, например Width = 50 , как указано ниже:
<canvas:CanvasControl x:Name="canvas" Margin="5" Width="50" Draw="Canvas_OnDraw"/>
После этого он должен работать нормально.
Второй метод заключается в изменении этого кода:
args.DrawingSession.FillRectangle(start , (float)(canvas.ActualHeight * (1 - total / range)), ColumnWidth, (float)(canvas.ActualHeight * (total / range)), Colors.Green);
Из этого метода args.DrawingSession.FillRectangle мы видим первый параметр start является осью X для линии прямоугольника, если мы хотим показать только на линии прямоугольника, у нас может быть только одна ось X , поэтому, пожалуйста, установите фиксированное значение для оси X. Например: 1,2,3,4 ..., пока эта ось X все еще находится в диапазоне CanvasControl, тогда любое значение в порядке.
Например, я установил 1 в качестве оси X следующим образом:
args.DrawingSession.FillRectangle(1, (float)(canvas.ActualHeight * (1 - total / range)), ColumnWidth, (float)(canvas.ActualHeight * (total / range)), Colors.Green);
Надеюсь, это поможет.