delphi canvas



Canvas delphi

Автор Ёергей banG! задал вопрос в разделе Компьютеры, Связь

Подскажите как рисовать в Delphi методом Canvas и получил лучший ответ

Ответ от Gennady[гуру]
Доброго времени суток.
Начнем с того, что Canvas не метод, а свойство некоторых графических объектов, в частности, TImage и TPaintBox.
Не знаю, поможет ли, но вот куски из работающей программы. Рисование происходит на канве TPaintBox.
procedure TSFAWindow.DrawCurve;
const
CurvName : array[1..4] of String = ('S-компонента','P-компонента','Среднее','');
var
i, j : Integer;
begin
j := 1;
GetRelXY;
while Result[j] <> nil do begin
with PaintBox1.Canvas do begin
Pen.Color := SFAColors[j+2]; // установим цвет кривой
CalcXY(Result[j], 0); // найдем начало кривой
MoveTo(X+PlotLeft, Y+PlotTop); // установим позицию пера
for i:=1 to Result[j].Count-1 do begin // для всех точек
CalcXY(Result[j], i); // считаем положение
LineTo(X+PlotLeft, Y+PlotTop); // проводим линию
end;
Font.Color := SFAColors[j+2]; // цвет типа кривой
TextOut(PlotLeft + (j-1)* 120, PlotBottom + 25, CurvName[j]);
end;
Inc(j); // переход к следующему графику
end;
end;
procedure TSFAWindow.GetRelXY;
begin
xRel := (PlotRight - PlotLeft)/(CurrBorder.xMax - CurrBorder.xMin);
yRel := (PlotBottom - PlotTop)/(CurrBorder.yMax-CurrBorder.yMin);
end;
procedure TSFAWindow.CalcXY(C: TCurveData; Index : Integer);
var
P : TCurvePoint;
begin
P := C[Index];
x := Round((P.Arg - CurrBorder.xMin)*xRel);
y := Round((-P.Func + CurrBorder.yMax)*yRel);
end;
Метод GetRelXY; определяет масшабные коэффициенты по горизонтали и вертикали. CalcXY, вычисляет координаты в системе отсчета канвы. Структура CurrBorder содержит минимальные и максимальные значения аргумента и функции. В массиве Result передаются значения аргументов и функций кривой.
Если кратко резюмировать все вышеприведенное, то свойство Canvas имеет методы MoiveTo(X,Y) и LineTo(X,Y) которые позиционируют указатель в точку с координатами X и Y и проводят линию до соответствующей точки. А вообще, если ознакомитесь с методами TCanvas в справке, то найдете массу интересного.
Удачи!

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: Подскажите как рисовать в Delphi методом Canvas

фон image в delphi
Доброго времени суток.

procedure TForm1.Button1Click(Sender: TObject);
beginподробнее...

как в Delphi очистить форму....
Очищай канву, что то типа этого
подробнее...

Очистка формы от линий в Delphi
var r: trect;
begin
r.Left:=0;
r.Right:=Form1.Width;
r.Top:=0; подробнее...
спросили в Plazma
Как нарисовать треугольник в Delphi 7???
Вот тебе пример

procedure TForm1.FormActivate(Sender: TObject);

begin

подробнее...
спросили в Endesa Inheritance
Как в Delphi распечатать Image1 и всё что находиться на нём (image, label)?
procedure PrintImage(Image: TImage; ZoomPercent: Integer);
// if ZoomPercent=100, Image will
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:
спросили в Endesa
вывод на печать из базы даных delphi.
Вот процедура с готовой программы, вывод на печать со StringGrid.
В таблице 15 столбцов.
подробнее...

Как определить длину строки в Delphi?
Доброго времени суток.

AnsiString это тип данных и у него нет никаких функций. Есть
подробнее...

Delphi Как залить канву (image1.canvas) фоновым цветом?
procedure FillAll(Canvas: TCanvas; Color: TColor);
var
 OldBrush : TBrush;
beginподробнее...

Как закрасить одну клетку в stringgrid в delphi?
переделай из этого :

procedure TFormHistory.ListHistoryDrawCell(Sender: TObject; Col, Row:
подробнее...

Помогите с ImageList в Delphi
Case <страна> of
<america> : Image1.Picture.LoadFromFile('America.jpg');

подробнее...

stringgrid раскраска. при нажатии на ячейку нужно раскрасить его delphi или C++ builder
Непременно StringGrid?
Вот пример для DrawGrid. Дальше, если надо, сам адаптируй.
подробнее...

Масштабирование TCanvas (Delphi 7)
Есть один метод, простого масштабирования, у канваса есть метод CopyRect, там задаешь параметры
подробнее...
спросили в Николай IV
как сделать вызвать всплывающую подсказку в delphi как в квипе
Программная установка текста всплывающей подсказки для кнопки Button1:
Button1.Hint:='Нажми на
подробнее...
спросили в Object Pascal
Я знаю очень хорошо паскаль, возможно ли мне будет нормально начать писать программы на Delphi? Он же из паскаля вырос
В свое время существовала поговорка вида: "Любой кто смог поставить себе Delphi может на нем
подробнее...
спросили в Type Moon
как сделать чтобы при нажатии на кнопку выводился заданный текст в Delphi. хелп
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Текст сообшения');подробнее...
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*