![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Бордюр шрифта (Outline)
MikeIp © (2002-10-29 10:19:00)Привет всем!
Нужно вывести текст с окантовкой:
1.Этот вариант, при малых размерах шрифта, делает текст обгрызанным.
BeginPath(Handle);
SetBkMode(Handle, TRANSPARENT);
TextOut(10,10, Edit1.Text);
EndPath(Handle);
StrokeAndFillPath(Handle);
2. Обрисовывать по точкам - медленно, но красиво. Может есть еще варианты. Подскажите ну очень нужно.
Всем заранее спасибо!
MBo (2002-10-29 12:14:00) [1]почти на порядок быстрее, чем через Pixels - использование ScanLine. Нвдо только учитывать цветовой формат (256 - 1байт/пиксел, 16М - 3 байта)
MikeIp (2002-10-29 11:39:00) [2]А при изменении размера шрифта снова высчитывать интервал?
Victor_Cr (2002-10-29 11:04:00) [3]А не проще выводить сначала чуть больший шрифт с цветом окантовки, а на него выводить меньший с нужным цветом но с чуть большим интервалом.
MikeIp (2002-10-29 10:32:00) [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 мог помочь, но нет времени с ним разбиратся. :(
MBo (2002-10-29 10:27:00) [5]я же не знаю, какой ты сейчас используешь ;)
MikeIp (2002-10-29 10:26:00) [6]Совершенно верно.
Может есть какой-то более быстрый доступ к точкам.
MBo (2002-10-29 10:23:00) [7]Нет вариантов. С регионами еще корявее. Антиалиасинг только при штатном выводе шрифта действует.
>Обрисовывать по точкам
что имеется в виду? Нечто вроде: если рядом черная точка, то закрасить данную синим?