Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #2 : 04-08-2004 08:26 » |
|
ROP2 - не знаю, может как-то и можно. Чтоб нарисовать это совсем не обязательно. Рисуешь прямоугольник, а поверх текст. Только это всё будет моргать, тк при вызове GDI ф-ции каждый раз всё перерисовывается. Поэтому используют двойной буффер. Те создают девайс-контекст в памяти, рисую всё в него, а потом выводят его в основной DC. Как это подробно функционирует я уже где-то на форуме рассказывал. Так вот, "вывод" в основной девайс контекст осуществляется с помощью BitBlt, которая в качестве последнего параметра получает ROP3 код. Те каким образом биты оригинала должны "складываться" с битами картинки из памяти. Может это то что ты имел ввиду, или слышал?
примерный код
rc - область вывода картинки
Подготовка буфера: CDC MemDC; MemDC.CreateCompatibleDC(pDC); CBitmap Bmp; Bmp.CreateCompatibleBitmap(pDC,rc.Width(), rc.Height()); CBitmap *pBmpOld = MemDC.SelectObject(&Bmp);
просто для изменения цвета - в твоём случае это позиция прогресса static i = 0; i += 1;
рисуем всё в MemDC.SetTextColor( RGB(255,i,0)); CString st = _T("текст"); MemDC.FillSolidRect(rc,RGB(i,i,i)); MemDC.DrawText(st,rc,DT_CENTER); копируем буфер в основной DC - в данном случае нас не интересует инфа основного DC pDC->BitBlt(0, 0, rc.Width(), rc.Height(), &MemDC, 0, 0, SRCCOPY));
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|