procedure TForm1.btn_DrawClick(Sender: TObject);
var
i:integer;
begin
chart.Clear;
Chart.DrawGrid(15);
SetLength(Series, 99);
for i := 0 to 99 do
begin
Series[i]:=PointF(i*10,Random(100));
Series[i]:=PointF(i*10+5,Random(100));
end;
Chart.DrawSeries(Series);
end;
Предполагаемая последовательность действий:
1. Очищаем панель
2. Рисуем сетку
3. Заполняем массив
4. Рисуем серию из линий.
По факту получаю пустую канву панели.
Если же я раскидаю все шаги по разным кнопкам и буду нажимать их последовательно - то все выполняется корректно. Если заворачиваю в одну процедуру - пустая канва.
Ткните носом в быдлокод, где я ошибся? во вложении полный проект.
Вложенные процедуры:
procedure TChart.Clear;
begin
panel.Canvas.BeginScene();
panel.Repaint;
panel.Canvas.EndScene;
end;
procedure TChart.DrawGrid(cell: integer);
var
i,n:integer;
begin
n:= Floor(Panel.Width/cell);
panel.Canvas.BeginScene();
panel.Canvas.StrokeThickness := 0.3;
for n := 0 to n do
begin
Panel.Canvas.DrawLine(PointF(Panel.Position.X + n*cell, Panel.Position.Y + 2),
PointF(Panel.Position.X + n*cell, Panel.Position.Y + Panel.Height - 2), 1);
end;
n:= Floor(Panel.Height/cell);
for n := 0 to n do
begin
Panel.Canvas.DrawLine(PointF(Panel.Position.X + 2, Panel.Position.Y + n*cell),
PointF(Panel.Position.X + Panel.Width - 2, Panel.Position.Y + n*cell), 1);
end;
panel.Canvas.EndScene;
end;
procedure TChart.DrawSeries(Series: TSeries);
var
n: integer;
begin
n:=Length(Series);
panel.Canvas.BeginScene();
for n := 0 to n-1 do
begin
DrawLine(TPointF(Series[n]), TPointF(Series[n+1]));
end;
panel.Canvas.EndScene;
end;
Вопрос
Ильдар
procedure TForm1.btn_DrawClick(Sender: TObject); var i:integer; begin chart.Clear; Chart.DrawGrid(15); SetLength(Series, 99); for i := 0 to 99 do begin Series[i]:=PointF(i*10,Random(100)); Series[i]:=PointF(i*10+5,Random(100)); end; Chart.DrawSeries(Series); end;
Предполагаемая последовательность действий:
1. Очищаем панель
2. Рисуем сетку
3. Заполняем массив
4. Рисуем серию из линий.
По факту получаю пустую канву панели.
Если же я раскидаю все шаги по разным кнопкам и буду нажимать их последовательно - то все выполняется корректно. Если заворачиваю в одну процедуру - пустая канва.
Ткните носом в быдлокод, где я ошибся? во вложении полный проект.
Вложенные процедуры:
procedure TChart.Clear; begin panel.Canvas.BeginScene(); panel.Repaint; panel.Canvas.EndScene; end;
procedure TChart.DrawGrid(cell: integer); var i,n:integer; begin n:= Floor(Panel.Width/cell); panel.Canvas.BeginScene(); panel.Canvas.StrokeThickness := 0.3; for n := 0 to n do begin Panel.Canvas.DrawLine(PointF(Panel.Position.X + n*cell, Panel.Position.Y + 2), PointF(Panel.Position.X + n*cell, Panel.Position.Y + Panel.Height - 2), 1); end; n:= Floor(Panel.Height/cell); for n := 0 to n do begin Panel.Canvas.DrawLine(PointF(Panel.Position.X + 2, Panel.Position.Y + n*cell), PointF(Panel.Position.X + Panel.Width - 2, Panel.Position.Y + n*cell), 1); end; panel.Canvas.EndScene; end;
procedure TChart.DrawSeries(Series: TSeries); var n: integer; begin n:=Length(Series); panel.Canvas.BeginScene(); for n := 0 to n-1 do begin DrawLine(TPointF(Series[n]), TPointF(Series[n+1])); end; panel.Canvas.EndScene; end;
_Chart.rar
Ссылка на комментарий
17 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.