|
#1
|
|||
|
|||
Вопрос по линиям
Всем здравствуйте, у меня появился такой вопрос, хочу реализовать рисование линии на панели на которой лежит множество кнопок, вопрос рисую линию на панели и она будет отображаться поверх кнопок? и второй вопрос посложнее, понял что реализация при помощи линий мне не очень поможет, так как мне нужно к примеру посчитать числа лежащие в caption кнопок, которые лежат между двумя линиями, дак вот, надо же обращаться к линии как к объекта и как то вычислить площадь между этими двумя линиями, вопрос как?
|
#2
|
||||
|
||||
Палитра компонентов, вкладка Additional, выбрать Shape или Bevel, что больше подойдёт и "поиграться" с их свойствами Pen, Shape etc.
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
|||
|
|||
Bevel беру к примеру, могу ли я рисовать линию в какую хочу сторону а не только снизу сверху слева справа? как тогда задать к примеру по диагонали?
|
#4
|
|||
|
|||
Еще такой вопрос вот код
Код:
Lines: array [0..3000] of TCanvas; Lines[i]:=TCanvas.Create; Lines[i].Pen.Color:=clred; Lines[i].MoveTo(Sklad.Top, Sklad.Left); Lines[i].LineTo(100,100); |
#5
|
||||
|
||||
Её вязать надо с чем-то.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#6
|
||||
|
||||
Цитата:
Код:
var bLeft, bTop, bWidth, bHeight : integer; begin Bevel1.SetBounds(bLeft, bTop, bWidth, bHeight); end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#7
|
|||
|
|||
Продолжая биться над массивом линий, пробую объявить массив так
Код:
Lines[i]: array [0..3000] of TShapes; тогда при помощи рисования четырех угольника, можно его "сжимать" и рисовать линию, тогда такой вопрос как рисовать четырехугольник не на форме а на панели, в виде линии при помощи данного объекта? |
#8
|
||||
|
||||
Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#9
|
|||
|
|||
Не не проще, прога не про рисование, линии нужны для отсечения секторов, и подсчета в них чисел.
|
#10
|
|||
|
|||
Код:
Var Lines: array [0..3000] of TShape; i,j:integer; begin i:=1; Lines[i]:=TShape.Create(Form1); Lines[i].Parent:=form1; Lines[i].Shape:=stRectangle; Lines[i].Left:=Button1.Left+20; Lines[i].Top:=Button1.Top+20; Lines[i].Width:=Form1.Height div 2; Lines[i].Height:=1; Lines[i].Pen.Color:=clRed; Lines[i].Visible:=true; |
#11
|
||||
|
||||
Тут надо не рисовать на канве, а создавать объекты на одной поверхности, тогда ты можешь пробежаться по массиву созданых объектов и определится с пересечением. Это возвращает к началу темы, когда шла речь про Shape. По сути, вам нужен простейший векторный графический редактор.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#12
|
|||
|
|||
такая проблема, как нарисовать линию ровно под углом, а то получается не совсем красиво.
Код:
procedure TForm1.FormPaint(Sender: TObject); Var i,j,sum,c:integer; begin i:=1; sum:=0; Lines[i].NachX:=button1.Left+button1.Width; Lines[i].NachY:=button1.top+button1.Height div 2; Lines[i].KonechX:=0; Lines[i].KonechY:=button1.top; form1.canvas.Pen.Color:=clred; form1.Canvas.Pen.Width:=1; form1.Canvas.MoveTo(Lines[i].NachX,Lines[i].NachY); c:=form1.Width div 2; while (c<>form1.Width) do begin form1.Canvas.LineTo(c, Lines[i].KonechY); if PointIntoRect (Lines[i], button3)=true then sum:=strtoint(button3.caption); if PointIntoRect (Lines[i],button2)=true then sum:=sum+strtoint(button2.Caption); c:=c+1; end; |