Форум: "Основная";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
ВнизLine Найти похожие ветки
← →
ZL (2005-01-23 20:16) [0]Подскажите, пожалуйста, как сделать так:
На форме чертим линию (х1,у1 – х2,у2), как написать надпись (1-2 символа) над линией по центру.
← →
MakedoneZ © (2005-01-23 20:26) [1]для вычисления координат центра линии вот ф-ла:
x:=(x1+x2)/2 y:=(y1+y2)/2,отсюда делай выводы :)
← →
begin...end © (2005-01-23 20:31) [2]А можно сформировать прямоугольник и вызвать DrawText с DT_CENTER.
← →
KilkennyCat © (2005-01-23 20:43) [3]
> begin...end © (23.01.05 20:31) [2]
а кто говорил, что линия - горизонтальная? :)
← →
KilkennyCat © (2005-01-23 20:44) [4]TLogFont
← →
MakedoneZ © (2005-01-23 21:03) [5]В случе если он не горизонтальная,то Label может пройти поверх линии,в зависимости коэффициента наклона.
← →
MakedoneZ © (2005-01-23 21:39) [6]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 22:14) [7]Извините забыл
end; для процедуры MakeMark.
Не судите строго :)
← →
ZL (2005-01-24 21:30) [8]Просто супер! Большое спасибо!!!!
← →
MakedoneZ © (2005-01-25 12:50) [9]Всегда рад помочь! :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.04 c