R := Rect(5, 270, 105, 295);
R2 := Rect(5+1, 270+1, 55, 295);
Canvas.Brush.Color := clWhite;
Canvas.Rectangle(R);
Canvas.Brush.Color := clBlue;
Canvas.Pen.Style := psClear;
Canvas.Rectangle(R2);
SetBkMode(Canvas.Handle, TRANSPARENT);
SetTextColor(Canvas.Handle, clWhite);
DrawText(Canvas.Handle, '50%', -1, R, DT_SINGLELINE or DT_CENTER or DT_VCENTER or DT_NOCLIP);
IntersectClipRect(Canvas.Handle, 55-1, 270, 105, 295);
SetTextColor(Canvas.Handle, clBlack);
DrawText(Canvas.Handle, '50%', -1, R, DT_SINGLELINE or DT_CENTER or DT_VCENTER or DT_NOCLIP);
Отрисовка текста
[ATTACH]3180[/ATTACH]
А получается при помощи DrawText(); так:
[ATTACH]3181[/ATTACH]
Если вы заметили, то в первом (желаемом) случае на белом фоне текст черного цвета, а на синем- белого.
Создайте прямоугольник отсечения, например. И рисуйте 2 раза.
Дело в том что:
у меня есть общий прямоуголник rc и заполненный прямоугольник кс2, но рисую то я по центру rc, как сделать отсечение но при этом штоб текст начинался с того же места?
Затем синий прямоугольник, с белым текстом используя DrawTextEx(), она позволяет выводить текст в прямоугольнике, и имеет еще кучу флагов для прорисовки текста.
Нарпимер так: