Как рассчитать WinForms TrackBar для каждой позиции тика? - PullRequest
0 голосов
/ 28 февраля 2019

Я использую элемент управления TrackBar для представления шкалы времени - каждый час соответствует галочке на TrackBar.У меня также есть панель под трекбаром, на которой размещены значки, представляющие события, привязанные к часам.Я должен разместить иконку под соответствующей галочкой трекбара.Проблема здесь заключается в расчете расстояния между тиками в пикселях.

Я пошел проверить и нашел следующий код в TrackBarRenderer.cs.

float inc = ((float)bounds.Width - lineWidth) / ((float)numTicks - 1);
...
float x = bounds.X + ((float)(numTicks - 1)) * inc;

"inc" - это расстояние между тиками, в то время как«х» - это каждое отдельное положение тика«numTicks» довольно понятен, «lineWidth» - жестко запрограммированная константа со значением «2».

Я использовал формулу «inc», и с некоторыми небольшими изменениями мне удалось вычислить положение каждого тика.довольно точный, с небольшой ошибкой на компьютере под управлением Windows 7. Однако, когда я запустил свою программу на Windows 10, ошибка позиционирования была слишком заметна даже при 0 - 10 TrackBar.

Есть ли какое-либо решение, которое будет работать с каждымВерсия для Windows?

...