Как расширить контроль за размером экрана в прокручиваемой панели
Я пытаюсь создать своего рода временную шкалу событий, чтобы синхронизировать события в моей игре с музыкой, я попытался сделать пользовательский элемент управления временной шкалой и поместить его внутрь панели, чтобы я мог прокручивать ее, однако я не могу расширить элемент управления за пределы предела.
Я провел небольшое исследование и обнаружил, что вы не можете изменить размер объекта формы за пределами ширины вашего монитора. Есть ли какой-нибудь обходной путь для этого? У меня уже есть он внутри панели с автопрокруткой.
Код не слишком релевантен но вот он:
public List<List<bool>> matrix = new List<List<bool>>(); public void ExpandWindow() { Size mySize = new Size(matrix.Count * CellWidth, matrix[0].Count * RowHeight); MaximumSize = mySize; this.Size = mySize; Invalidate(); MessageBox.Show("Timeline Width: " + matrix.Count + "\r\nLogical Width: " + (mySize.Width / CellWidth) + "\r\nPhysical Width: " + (Width / CellWidth)); }
Вывод окна debug messagebox выглядит следующим образом
Timeline Width: 4615 Logical Width: 4615 Physical Width: 1260
ширина временной шкалы - это ширина матрицы, логическая ширина-это то, что выводит вычисление, а физическая ширина-это то, как долго он на самом деле был установлен.
Матрица заполняется в другом месте кода
Что я уже пробовал:
Я попытался переопределить функцию SetBoundsCore, но это просто помешало элементу управления вообще изменить размер.
Graeme_Grant
вы пробовали использовать поиск Google? прокручиваемая панель winform-поиск Google[^]
Sicppy
У меня уже есть прокручиваемая панель, я просто не могу получить элемент внутри панели дольше 1260
Graeme_Grant
Я думаю, что вы не смотрели на ссылку, которую я предоставил... Вот ответ StackOverflow, который объясняет, как делать то, что вы хотите: https://stackoverflow.com/a/4306333 (из результатов поиска Google search, приведенных выше).
BillWoodruff
Это приложение Windows Form ? Если это так, то есть простой способ достичь того, чего вы хотите.
Sicppy
Да,это приложение windows forms.
BillWoodruff
Планируете ли вы самостоятельно нарисовать содержимое временной шкалы с помощью "Paint" или собираетесь отобразить элементы управления WinForm для создания временной шкалы ?
Sicppy
Я рисую содержимое с помощью события paint
BillWoodruff
в этом случае я бы рассмотрел возможность использования двойного буферизованного пользовательского элемента управления для рисования, а не Панели. если бы я делал игру, я бы использовал Unity или DirectX, которые очень хорошо настроены для сложного рендеринга. твое здоровье, Билл
Sicppy
Я вроде как отказался от этого вопроса, ха-ха, но на самом деле я делал игру не в winforms, а в unity, но это была ритмическая игра, я сделал отдельную программу в winforms, чтобы попытаться сделать своего рода планировщик, который приурочил события к музыке, в конце концов я просто использовал Vixen-программу, используемую для синхронизации рождественских огней с музыкой, и экспортировал проекты в необработанный текстовый формат и анализировал их в своей игре в unity.