Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Долгая прорисовка / 3 сообщений из 3, страница 1 из 1
25.04.2015, 03:32
    #38945110
Wrun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долгая прорисовка
Добрый день, пытаюсь динамически рисовать кнопки.

Проблема в том что даже на нормальном компе прорисовка занимает пару секунд - выглядит не красиво.
Хотя кнопок всего штук 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.
for (int i = 0; i < cnt; i++)
{
	btn = CreateButton(dd[i]["name"].ToString(), (int)dd[i]["id"], ButtonTag.Types.Struct);
	MainTable.Controls.Add(btn, col, MainTable.RowCount - 1);
	col++;
	if (col > 1)
	{
		MainTable.RowCount++;
		col = 0;
	}
}

private Button CreateButton(string Text, int DbId, ButtonTag.Types ButtonType, Bitmap Image = null)
{
	Button btn = new Button();
	btn.Text = Text;
	btn.Height = 100;
	btn.Tag = new ButtonTag(ButtonType, DbId);
	btn.Click += new EventHandler(Button_Click);
	btn.Font = new Font(btn.Font.FontFamily, 22);
	if(Image == null)
		Image = Properties.Resources.btnBlue1;
	btn.Image = Image;
	btn.Font = new Font(btn.Font.FontFamily, btn.Font.Size, FontStyle.Bold);
	btn.Dock = DockStyle.Fill;
	return btn;
}
...
Рейтинг: 0 / 0
25.04.2015, 11:39
    #38945162
VSVLAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долгая прорисовка
Wrun,

Или скрывайте кнопки, потом разом все показывайте, либо... возможно нужно сделать типо SuspendLayout у формы, чтобы кнопки не перерисовывались и не меняли размеры, во время манипуляций.

У меня было похожее, только кнопки (алфавит) я создавал и укладывал в FlowLayoutPanel, и всё это медленно "анимировало", я решил просто скрывать панель, а после показывать, немного мерцание было - не критично
...
Рейтинг: 0 / 0
25.04.2015, 11:56
    #38945166
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долгая прорисовка
Wrun, попробуй такой вариант:
Код: 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.
SuspendLayout();
Bitmap btnBlue1 = Properties.Resources.btnBlue1;
for (int i = 0; i < cnt; i++)
{
	btn = CreateButton(dd[i]["name"].ToString(), (int)dd[i]["id"], ButtonTag.Types.Struct, btnBlue1);
	MainTable.Controls.Add(btn, col, MainTable.RowCount - 1);
	col++;
	if (col > 1)
	{
		MainTable.RowCount++;
		col = 0;
	}
}
ResumeLayout();

private Button CreateButton(string Text, int DbId, ButtonTag.Types ButtonType, Bitmap Image = null)
{
	Button btn = new Button();
	btn.Text = Text;
	btn.Height = 100;
	btn.Tag = new ButtonTag(ButtonType, DbId);
	btn.Click += new EventHandler(Button_Click);
	btn.Font = new Font(btn.Font.FontFamily, 22);
	btn.Image = Image ?? Properties.Resources.btnBlue1;
	btn.Font = new Font(btn.Font.FontFamily, btn.Font.Size, FontStyle.Bold);
	btn.Dock = DockStyle.Fill;
	return btn;
}
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Долгая прорисовка / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]