Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как реализуются цифры %-в рисованных прогрессбарах в VC+

2.0K
04 марта 2003 года
Imhotep
22 / / 04.03.2003
Подскажите плз как реализуются цифры %-в рисованных прогрессбарах в VC++.
2.0K
05 марта 2003 года
Imhotep
22 / / 04.03.2003
Может вопрос непонятен? Никто не отвечает... :(
Подробнеее: мне больше нравится когда прогрессбаром выступает монотонно залитый прямоугольник, и на нём ещё можно выводить процент выполненного процесса. Внимание вопрос: как вывести на границе двух прямоугольников надпись, например, "50%", фон которого будет слева цвета левого прямоугольника, а справа - соответственно правого. Подскажите плз, ато как-то некрасиво получается.
380
05 марта 2003 года
Arestov
285 / / 20.09.2000
Цитата:
Originally posted by Imhotep
Подскажите плз как реализуются цифры %-в рисованных прогрессбарах в VC++.



в стандартных прогрессбарах Windows цифр нет.
а в тех что скажем при InstallShield'овской установке, так это там свой контрол. Юзай лучше стандартные, ну а если очень хотса цифирьки по-середине прогрессбара делай свой прогресбар :)

2.0K
06 марта 2003 года
Imhotep
22 / / 04.03.2003
Цитата:
Originally posted by Arestov


в стандартных прогрессбарах Windows цифр нет.
а в тех что скажем при InstallShield'овской установке, так это там свой контрол. Юзай лучше стандартные, ну а если очень хотса цифирьки по-середине прогрессбара делай свой прогресбар :)



Так в том-то и дело что свой сделал, а вывести цифры с прозрачным фоном не могу.

380
07 марта 2003 года
Arestov
285 / / 20.09.2000
Цитата:
Originally posted by Imhotep


Так в том-то и дело что свой сделал, а вывести цифры с прозрачным фоном не могу.



гы :D так бы и сказал:

SetBkMode(hDC, TRANSPARENT);


но ведь тебе ещё надо чтобы у тя на "белом" фоне цыфры были темные, а на тёмном - светлые. Когда скажем 50% то часть цифр будет одного цвета, а часть другого, чтобы этого добиться я делал так:

ставил отсечение и рисовал цифры одним цветом, а затем ставил отсечение на другую сторону и рисовал другим.

char szText[256];
int cbText;
SIZE sizeText;

sprintf(szText, "%d%%", nPercents);
cbText = strlen(szText);
GetTextExtentPoint32(hdc, szText, cbText, &sizeText);

int nOldBkMode = SetBkMode(hdc, TRANSPARENT);
COLORREF clrOldText = SetTextColor(hdc, clrLightColor);

HRGN hrgn = CreateRectRgn(0, 0,
nPercents*nWidth/100, nHeight);
SelectClipRgn(hdc, hrgn);
DeleteObject(hrgn);

TextOut(hdc, (nWidth-sizeText.cx)/2,
(nHeight-sizeText.cy)/2, szText, cbText);

hrgn = CreateRectRgn(nPercents*nWidth/100,0,
nWidth, nHeight);
SelectClipRgn(hdc, hrgn);
DeleteObject(hrgn);

SetTextColor(hdc, clrDarkColor)
TextOut(hdc, (nWidth-sizeText.cx)/2,
(nHeight-sizeText.cy)/2, szText, cbText);

SetBkMode(hdc, nOldBkMode);
SetTextColor(hdc, clrOldText);

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог