Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];

Вниз

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

 
Сергей Петров   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.033 c
8-1088267274
Shnaider
2004-06-26 20:27
2004.09.12
ID3 v2


6-1087534420
atruhin
2004-06-18 08:53
2004.09.12
Сокет на Win API


1-1093357599
барбос
2004-08-24 18:26
2004.09.12
бесконечный цикл


3-1092255203
3APA3A
2004-08-12 00:13
2004.09.12
Уровень изоляции транзакций


1-1093453939
zep
2004-08-25 21:12
2004.09.12
StringGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский