Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.12;
Скачать: CL | DM;

Вниз

Как правильно двигать содержимое панели?   Найти похожие ветки 

 
Сергей Петров   (2004-08-29 04:23) [0]

Задача приблизительно следущая: есть панель, и есть отдельно скроллбар. Хочу связать их вместе, то есть сделать подобие скроллбокса. Как мне правильно двигать панель? Под "правильно" подразумевается такой метод, при котором не будет этого противного моргания...

Есть и второй вопрос. Имеется в наличии Timage. Нужно быстро заменить ее bitmap на другой (когда мышка наводится на картинку - она должна измениться на другую), опять же - как это сделать так, чтобы не было мерцания?


 
TUser ©   (2004-08-29 06:13) [1]

А почему не использовать скроллбокс?

См. также WM_VSCROLL, WM_HSCROLL, ShowScrollBar.


 
Mim1 ©   (2004-08-29 08:27) [2]

Я как понимаю моргание это свойство операционки, при ресайде моргает все что младьше XP и на уровне приложения с этим бороться ИМХО не стоит.

По вопросу, может контролы расположить на вложеной панельке и менять ее координаты?


 
DiamondShark ©   (2004-08-29 11:31) [3]

А TScrollBox чем не угодил?


 
Mim1 ©   (2004-08-29 11:34) [4]

Он про это в компонентах писал, ему хочется посвоему скролбокс отрисосывать.


 
Mim1 ©   (2004-08-29 11:35) [5]

скролбар тоесть


 
Ломброзо ©   (2004-08-29 14:45) [6]

> Есть и второй вопрос.
Double buffering. В памяти создать Device Context (DC), на нём отрисовать всё, что нужно, затем скопировать битовый массив функцией BitBlt на исходный DC. Кусочек на С++:

void CXNGrid::OnPaint()
{
PAINTSTRUCT ps;
CDC *dc = BeginPaint(&ps);
CRect badrect = ps.rcPaint;
CRect rc;
GetClientRect(&rc);

CDC memDC;
CBitmap memBmp;
memDC.CreateCompatibleDC(dc);
memBmp.CreateCompatibleBitmap(dc, rc.right - rc.left, rc.bottom - rc.top);
memDC.SelectObject(&memBmp);

// Здесь - вся отрисовка

dc->BitBlt(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, &memDC, 0, 0, SRCCOPY);

memBmp.DeleteObject();
memDC.DeleteDC();
EndPaint(&ps);
}


 
Ломброзо ©   (2004-08-29 14:48) [7]

Для Delphi - вместо CDC использовать TCanvas, вместо CBitmap - TBitmap. А может, стоит просто обратить внимание на TWinControl.DoubleBuffered?



Страницы: 1 вся ветка

Текущий архив: 2004.09.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.035 c
14-1092155523
Sergey Masloff
2004-08-10 20:32
2004.09.12
Нужно ли бороться с хинтами и ворнингами - 2


14-1093435326
Prohodil Mimo
2004-08-25 16:02
2004.09.12
Какие любимые игрушки у детей программеров?


4-1091092419
Morphin
2004-07-29 13:13
2004.09.12
Ограничение нагрузки на CPU


1-1093525524
AlexXn
2004-08-26 17:05
2004.09.12
Тэги HTML


1-1093525656
AlexXn
2004-08-26 17:07
2004.09.12
Тэги HTML