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 в справке, то найдете массу интересного.
Удачи!
фон image в delphi
Доброго времени суток.
procedure TForm1.Button1Click(Sender: TObject);
begin
подробнее...
Очистка формы от линий в Delphi
var r: trect;
begin
r.Left:=0;
r.Right:=Form1.Width;
r.Top:=0;
подробнее...
Как нарисовать треугольник в Delphi 7???
Вот тебе пример
procedure TForm1.FormActivate(Sender: TObject);
begin
подробнее...
Как в Delphi распечатать Image1 и всё что находиться на нём (image, label)?
procedure PrintImage(Image: TImage; ZoomPercent: Integer);
// if ZoomPercent=100, Image will
подробнее...
вывод на печать из базы даных 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, там задаешь параметры
подробнее...
как сделать вызвать всплывающую подсказку в delphi как в квипе
Программная установка текста всплывающей подсказки для кнопки Button1:
Button1.Hint:='Нажми на
подробнее...
Я знаю очень хорошо паскаль, возможно ли мне будет нормально начать писать программы на Delphi? Он же из паскаля вырос
В свое время существовала поговорка вида: "Любой кто смог поставить себе Delphi может на нем
подробнее...
как сделать чтобы при нажатии на кнопку выводился заданный текст в Delphi. хелп
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Текст сообшения');
подробнее...