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

Вниз

Бордюр шрифта (Outline)   Найти похожие ветки 

 
MikeIp   (2002-10-29 10:19) [0]

Привет всем!
Нужно вывести текст с окантовкой:
1.
BeginPath(Handle);
SetBkMode(Handle, TRANSPARENT);
TextOut(10,10, Edit1.Text);
EndPath(Handle);
StrokeAndFillPath(Handle);
Этот вариант, при малых размерах шрифта, делает текст обгрызанным.
2. Обрисовывать по точкам - медленно, но красиво. Может есть еще варианты. Подскажите ну очень нужно.
Всем заранее спасибо!


 
MBo ©   (2002-10-29 10:23) [1]

Нет вариантов. С регионами еще корявее. Антиалиасинг только при штатном выводе шрифта действует.

>Обрисовывать по точкам
что имеется в виду? Нечто вроде: если рядом черная точка, то закрасить данную синим?


 
MikeIp   (2002-10-29 10:26) [2]

Совершенно верно.
Может есть какой-то более быстрый доступ к точкам.


 
MBo ©   (2002-10-29 10:27) [3]

я же не знаю, какой ты сейчас используешь ;)


 
MikeIp   (2002-10-29 10:32) [4]


for x:=0 to Rect.Right do begin
for y:=0 to Rect.Bottom do begin
if Canva.Pixels[x,y]=fnColor then begin
if Canva.Pixels[x-1,y]<>fnColor then Canva.Pixels[x-1,y]:=olColor;
if Canva.Pixels[x-1,y-1]<>fnColor then Canva.Pixels[x-1,y-1]:=olColor;
if Canva.Pixels[x+1,y-1]<>fnColor then Canva.Pixels[x+1,y-1]:=olColor;
if Canva.Pixels[x,y+1]<>fnColor then Canva.Pixels[x,y+1]:=olColor;
if Canva.Pixels[x,y-1]<>fnColor then Canva.Pixels[x,y-1]:=olColor;
if Canva.Pixels[x+1,y+1]<>fnColor then Canva.Pixels[x+1,y+1]:=olColor;
if Canva.Pixels[x+1,y]<>fnColor then Canva.Pixels[x+1,y]:=olColor;
if Canva.Pixels[x-1,y+1]<>fnColor then Canva.Pixels[x-1,y+1]:=olColor;
end;
end
</coed>
где fnColor - текст, olColor - бордюр.
Может Direct мог помочь, но нет времени с ним разбиратся. :(


 
Victor_Cr ©   (2002-10-29 11:04) [5]

А не проще выводить сначала чуть больший шрифт с цветом окантовки, а на него выводить меньший с нужным цветом но с чуть большим интервалом.


 
MikeIp   (2002-10-29 11:39) [6]

А при изменении размера шрифта снова высчитывать интервал?


 
MBo ©   (2002-10-29 12:14) [7]

почти на порядок быстрее, чем через Pixels - использование ScanLine. Нвдо только учитывать цветовой формат (256 - 1байт/пиксел, 16М - 3 байта)



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

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

Наверх




Память: 0.48 MB
Время: 0.025 c
1-28796
Anton Tsvilikh
2003-02-01 21:35
2003.02.10
ПОЧЕМУ НЕ ХЧЕТ РИСОВАТЬ?????


4-29155
mate
2002-12-26 17:14
2003.02.10
Post и SendMessage


3-28676
Соловьев
2003-01-24 14:40
2003.02.10
Почему не работает UPPER?


14-29014
Filat
2003-01-23 13:34
2003.02.10
Срочно!! FreeBSD, DOS, WIN 98, WIN 2K, как поставить все сразу???


14-29068
MBo
2003-01-25 01:43
2003.02.10
Фортран, функция Sign