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

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

Line


ZL ©   (2005-01-23 20:16:00) 

Подскажите, пожалуйста, как сделать так:
На форме чертим линию (х1,у1 – х2,у2), как написать надпись (1-2 символа) над линией по центру.


MakedoneZ   (2005-01-25 12:50:00) [1]

Всегда рад помочь! :)


ZL   (2005-01-24 21:30:00) [2]

Просто супер! Большое спасибо!!!!


MakedoneZ   (2005-01-23 22:14:00) [3]

Извините забыл
end; для процедуры MakeMark.
Не судите строго :)


MakedoneZ   (2005-01-23 21:39:00) [4]

procedure MakeMark(x1,x2,y1,y2 : Integer; N,M: Byte; Mark: String);

begin
with MyForm.Canvas do
begin
 MoveTo(x1,y1);
 LineTo(x2,y2);
 TextOut(((x1+x2) div 2)-N,((y1+y2) div 2)+M,Mark);
end;

Здесь не при помощи Label,а графический вывод слова Hi;
Как ты понял x1,x2,y1,y2 - координаты линии.
А вот N,M зависят от шрифта(Canvas.Font.Size:=z),но если ты не менял размер то рекомендую N=4; M=4(Ведь ты сказал что не более 2 симвовлов,вообще надо бы учитывать ширину шрифта,но если не менял и 2 либо 1 символ,то N=4; M=4;);

В вычислении середины отрезка может быть погрешность,в случае если (x2+x1) нечетное (из-за div),но она очень мала.
Добавлю что в случае если линия не горизонтальна,слово может пройти по линии,и тут уже надо учитывать угловой коэффициент.


MakedoneZ   (2005-01-23 21:03:00) [5]

В случе если он не горизонтальная,то Label может пройти поверх линии,в зависимости коэффициента наклона.


KilkennyCat   (2005-01-23 20:44:00) [6]

TLogFont


KilkennyCat   (2005-01-23 20:43:00) [7]


> begin...end ©   (23.01.05 20:31) [2]

а кто говорил, что линия - горизонтальная? :)


begin...end   (2005-01-23 20:31:00) [8]

А можно сформировать прямоугольник и вызвать DrawText с DT_CENTER.


MakedoneZ   (2005-01-23 20:26:00) [9]

для вычисления координат центра линии вот ф-ла:
x:=(x1+x2)/2  y:=(y1+y2)/2,отсюда делай выводы :)


Наверх

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