Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
3 / 3 / 3
Регистрация: 17.07.2017
Сообщений: 91

Расчет значений собственного ScrollBar

21.06.2018, 16:15. Показов 1086. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, уважаемые форумчане! Не получается синхронизировать движение вертикального ползунка с видимой частью экрана. Понимаю, что где-то накосячил с математикой. Буду благодарен за помощь. Порядок собственного алгоритма:

1. Определяем размер строки (10 пикселей)
2. Делим эти строки на высоту сцены (this.Height/10) - это будет равно максимуму, количество строк
3а. Определяем шаг в пикселях (Высота видимой сцены=Высоте ScrollBar/суммарное количество строк)
3б. Обновляем высоту ползунка в меньшую сторону, поскольку видимая сцена меньше отображаемой
4. Вот тут не понимаю, как определить текущую величину (Value), находящуюся в пределах от 0 до количества строк, чтобы при MouseMove она, умноженная на шаг в пикселях, двигала сцену...

Добавлено через 6 минут
Временное решение такое:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
private void Thumb_MouseDown(object sender, MouseEventArgs e)
        {
            StarDragThumb = true; //сообщаем, что контрол нажат и можно двигать
            GetCursorPositionY = Cursor.Position.Y; //запоминаем позицию курсора относительно левого угла экрана
        }
 private void Thumb_MouseMove(object sender, MouseEventArgs e)
        {
          if(StarDragThumb==true)
            {
                if(this.Orientation==ScrollOrientation.VerticalScroll)
                {
                    NewValue = this.Value + (Cursor.Position.Y - GetCursorPositionY) / (int)StepInPX;
                    if (NewValue != this.Value)
                    {
                        if(NewValue<=0)
                        {
                            Thumb.Top = 0;
                            NewValue = 0;
                        }
                        else if(NewValue>=this.Maximum_)
                        {
                            NewValue = this.Maximum;
                            Thumb.Top = NewValue-Thumb.Height/CellSize;
                        }
                        else if(NewValue > 0 && NewValue < this.Maximum_)
                        {
                            Thumb.Top = NewValue * (int)StepInPX;
                            CanvasControlPanel.DrawControl.Top = -Thumb.Top; //присвоение сцене полученной величины
                        }
                        
                    }
 
                }
                
            }
        }
Но это, как понимаете, не работает как надо. Бьюсь уже несколько часов и не соображу, как правильно
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.06.2018, 16:15
Ответы с готовыми решениями:

ScrollBar с функцией преобразования значений цветовых составляющих TColorRef
Здравствуйте, надо создайть программу, с помощью которой пользователь мог бы увидеть в зависимости от значений насыщенности красного,...

Степенной метод нахождения наибольшего по модулю собственного значения и соответствующего ему собственного вектора
Привет всем. Есть код программы, но почему то он не работает, подскажите в чем дело, может ввожу неправильно. Тестовый пример: ...

Запись в собственного класса бинарный файл собственного
есть Свой тип данных дробь. Надо реализовать запись и загрузку в\из бинарного файла. #ifndef RATION_H #define RATION_H #include...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.06.2018, 16:15
Помогаю со студенческими работами здесь

Расчёт значений в БД
Здравствуйте уважаемые форумчане! есть БД вот её таблицы вот так выглядит БД в DELPHI использовал здесь компоненты...

Расчёт значений
Здраствйте. Помогите розобратса Мне нада зделать програму для рощёта % от числа и суму Должно быть 7 textBox и 3 кнопки я все...

Расчет значений функции
1. По заданному уравнению функции заполнить таблицу еѐ значениями на отрезке с шагом h. Отрезок и шаг выбрать самостоятельно с учѐтом...

расчёт значений переменных
Здравствуйте!Возник вопрос касательно перерасчета переменных в цикле. Допустим, у нас есть код string mas; for(int...

Расчёт значений по формулам
Программа для расчёта Y и Z по формулам. Исходные данные вводятся с клавиатуры. Также найти разность между значениями Y и Z. Спасибо. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru