Когда интересно вывести в TPanel "полноценный" управляемый графический объект, скажем, линию,
то мы должны поступать так:
line:= TLine.Create(pnlDrawing);
line.StrokeThickness:= 10;
line.LineType:= TLineType.Top;
line.Position:= TPosition.Create(TPointF.Create(130, 130));
line.RotationAngle:= 90;
line.HitTest:= True;
line.StrokeCap:= TStrokeCap.Round;
line.Width:= 100;
// line.Stroke:= не могу найти в доке правил описания кистей!
line.Parent:= pnlDrawing;
где pnlDrawing - TPanel контейнер.
Однако же, если необходимо получить лишь визуальную - неуправляемую линию, на помощь приходит TCanvas (FM edition ) как аналог графического контекста в других языках. И по установленным правилам мы помещаем вот такую часть в OnPaint обработчик контейнера рисования.
begin
with Canvas do
if BeginScene then
begin
try
Canvas.DrawLine(TPointF.Create(100, 100), TPointF.Create(100, 100), 0.5);
finally
Canvas.EndScene;
end;
end;
end;
Эксперименты показывают, что Canvas "помнит" размер пена (ручки), установленный как line.StrokeThickness:= 10;, например, в обработчике OnCreate панели или формы. Опыт показал также, что вызов OnPaint работает в стиле SMART - только при необходимости перерисовать панель. Скажеи, при изменении размеров формы.
Вопрос:
Линия, которая создается в Canvas.DrawLine(...) - это ведь всего лишь примитив в терминах DirectX, если мы говорим о Windows исполнении?
Вопрос
SergeyIT
Приветствую.
Речь пойдет о создании графики в коде.
Когда интересно вывести в TPanel "полноценный" управляемый графический объект, скажем, линию,
то мы должны поступать так:
где pnlDrawing - TPanel контейнер.
Однако же, если необходимо получить лишь визуальную - неуправляемую линию, на помощь приходит TCanvas (FM edition ) как аналог графического контекста в других языках. И по установленным правилам мы помещаем вот такую часть в OnPaint обработчик контейнера рисования.
Эксперименты показывают, что Canvas "помнит" размер пена (ручки), установленный как line.StrokeThickness:= 10;, например, в обработчике OnCreate панели или формы. Опыт показал также, что вызов OnPaint работает в стиле SMART - только при необходимости перерисовать панель. Скажеи, при изменении размеров формы.
Вопрос:
Линия, которая создается в Canvas.DrawLine(...) - это ведь всего лишь примитив в терминах DirectX, если мы говорим о Windows исполнении?
А вовсе не полноценный UI компонент TLine. Так?
Изменено пользователем SergeyITСсылка на комментарий
5 ответов на этот вопрос
Рекомендуемые сообщения