Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сделать обводку текста [D5]


Страницы:   1 2

Ray ©   (2006-05-15 16:06:00) 

Вывожу строку через TextOut.
Как сделать обводку этого текста линией указанного цвета и толщины?


Zeqfreed   (2006-05-15 23:36:00) [21]

2. Можно. Как раз таки передавать параметром необходимый пэйнт-бокс.
Примерно так:
function Sample(DrawTo : TPaintBox);
begin
 with DrawTo do begin
  . . .
 end;
end;


Джо   (2006-05-15 23:36:00) [22]

> Можно ли сделать вывод одной процедурой, в которую бы передавалось
> имя? (или что?) этого PaintBox'а ?

Сделай универсальную процедуру, в которую передается Сanvas. Тогда одной процедурой можно рисовать на чьей угодно канве, хоть формы, хоть TImage'а, хоть принтера.


Джо   (2006-05-15 23:34:00) [23]

> .вывожу текст я на canvas от PaintBox.

Не нужно выводить на канву PaintBox. Принцип такой. Заводишь промежуточный TBitmap, рисуешь, когда нужно, на его канве. В обработчике OnPaint TPaintBox'а копируешь изображение промежуточного TBitmap на канву PaintBox'а.


Ray   (2006-05-15 23:31:00) [24]

Первый вопрос снят :)


Ray   (2006-05-15 23:00:00) [25]

еще 2 траблы :)
1.обводка рисуется в обе стороны, убивая при этом надпись.
Т.е., видимо, надо надпись без обводки вывести еще раз поверх этого
дела.  Вопрос: как это делается?

2.вывожу текст я на canvas от PaintBox. Их у меня несколько. Можно ли сделать вывод одной процедурой, в которую бы передавалось имя? (или что?) этого PaintBox'а ?


Джо   (2006-05-15 22:13:00) [26]

Тем более, что
If Width is set to a value less than 1, the pen is given a Width of 1.
(с) Delphi Help по TPen.Width.


Джо   (2006-05-15 22:11:00) [27]

> [8] Ray ©   (15.05.06 22:07)

Наверное, самое простое — это именно "проверочка" :)


Ray   (2006-05-15 22:07:00) [28]

>Вот небольшой пример с TImage:

То, что нужно :)
Но если толщина обводки указана=0, все равно рисуется
обводка толщиной в один пиксель. Можно, конечно проверку поставить
на толщину, но может, есть более простой способ?


Ray   (2006-05-15 21:42:00) [29]

Именно обводка букв нужна. Спасибо.


Джо   (2006-05-15 18:27:00) [30]

Хм. Я почему-то подумал, что "обводка" — это обведение контура букв. Потому и предложил [3], [4].
Если просто описаный прямоугольник сделать, то достаточно [5].


Desdechado   (2006-05-15 18:25:00) [31]

DrawText
подходит и для вывода текста, а также для вычисления прямоугольника, в который он будет вписан (как раз для обводки)
параметр DT_CALCRECT


Джо   (2006-05-15 17:39:00) [32]

Вот небольшой пример с TImage:

procedure TForm1.Button1Click(Sender: TObject);
begin
 with Image1.Canvas do
 begin
   BeginPath(Handle);
   try
     Brush.Style := bsClear;
     Font.Name := 'Arial';
     Font.Size := 24;
     TextOut(10,10,'Test string');
     Pen.Color := clBlack;
     Pen.Width := 1;
   finally
     EndPath(Handle)
   end;

   Brush.Style := bsSolid;
   Brush.Color := clYellow;

   StrokeAndFillPath(Handle);
 end;
end;


Джо   (2006-05-15 17:27:00) [33]

> Ray ©   (15.05.06 16:06)
> Вывожу строку через TextOut.
> Как сделать обводку этого текста линией указанного цвета
> и толщины?

Используй Path functions. Очень рекоммендую.


KilkennyCat   (2006-05-15 17:25:00) [34]

Вывести четыре раза дополнительно, со смещением координат.


Gydvin   (2006-05-15 16:16:00) [35]

pen


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо