badboychik
Дата: 31.01.2010 12:52:22
делаю простую прогу для проведения "Своей Игры". Надо чтобы игровое поле принимало размер формы и ширина/высота колонок/рядов сохранялись - процент от общей ширины/высоты. Сделал на TLP, программно создаю колонки и Label-ы в ячейки сую. Все бы хорошо, но при ресайзе формы такиииие тормоза, как будто у меня там 100+ компонент. ДаблБуфер у формы не помогает.
DataGridView не подойдет, т.к. ширина колонок у него абсолютная, а надо относительную. Но если что, придется юзать ее и ручками ширины задавать при ресайзе.
Еще вариант - WPF. Там хотя бы аппаратный директХ.
Я лублу C#
D129
Дата: 31.01.2010 20:28:10
badboychik |
тоже вариант. Самый хардкорный правда.
З.Ы. Что есть ящик и где у него секции? :)
Я лублу C# |
Ну это уже к предметной области имеет отношение.
Полка на складе, ящик на полке, секция в ящике, болтик в секции.
Управление автоматическим складом - в частности, секции надо показывать кладовщику с указанием откуда и сколько штук брать - чтобы укомплектовать конкретный заказ.
соответственно - принцип разбивки ящика - это часть логистики склада.
D129
Дата: 21.04.2015 12:49:53
igen |
---|
Никакого WPF не надо и даже DoubleBuffered - просто вешаете обработчики на события начала/окончания изменения размеров формы:
private void MainForm_ResizeBegin(object sender, EventArgs e) {
this.SuspendLayout();
}
private void MainForm_ResizeEnd(object sender, EventArgs e) {
this.ResumeLayout();
}
|
Ну мне пробовать уже негде, я в той фирме уже не работаю, но еще помню, что интересен был как раз процесс перерисовки во время изменения размера формы - тянешь мышкой за уголок, и все перерисовывается на новый размер.
(А не "все замерло, тащим мышкой угол - отпустили, все отрисовалось")
:-)
Дмитрий77
Дата: 21.04.2015 13:16:20
Да, есть такая проблема.
Т.е. у меня например сделан Background градиентом, поверх понакидан рисунок, ваш этот TableLayoutPanel в нем этак с десяток Lable. При ресайзе градиент перерисовывается, TableLayoutPanel ездит согласно макету. Мерцание сильное, границы Label - стробоскопическим эффектом, особенно заметно на XP, в .Net 4.5 вроде этот эффект меньше чем в .Net 2, не уверен. Пока забил, но потом видимо буду переделывать аккуратно без стрипов.
igen,
Ваш метод конечно интересен, заинтересовало - попробовал,
но да, интересна качественная непрерывная перерисовка, а не замораживание.
И потом он работает только для Form целиком, т.е. нельзя его применить к отдельно взятой Panel, а это уже ни в какие ворота.
Мне больше нравится как в 2003-м сервере: не непрерывная перерисовка, а ездит палка-"сплиттер", а потом все взяло и туда разом переехало (качественно и экономично). В 2003-м это по дефолту,в XP это точно настраивается, настраивается ли в новых не знаю. Но по любому это настройки OS, а не проги, не будешь же юзеру его кастомизацию системы ломать ради своей проги.