![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сделать обводку текста [D5]
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