Witam!
Mam na formie Image o wymiarach 200 x 200 i dwa okienka edycyjne, do których użytkownik wprowadza parametry a i b. Program ma rysować wykres funkcji y = ax + b. Napisałem taki kod:
procedure TForm1.Button1Click(Sender: TObject);
var a, b, i, x : Integer;
begin
//Pobranie parametrow
a := StrToint(Edit1.Text);
b := StrToInt(Edit2.Text);
//Rysowanie ukladu wspolrzednych
With Image1 do
begin
Canvas.MoveTo(100, 0);
Canvas.LineTo(100, 200);
Canvas.MoveTo(0, 100);
Canvas.LineTo(200, 100);
end;
//Rysowanie wykresu funkcji
Image1.Canvas.MoveTo(0, 0);
x := 0;
for i := 1 to 200 do
begin
Image1.Canvas.LineTo(x, a * x + b);
x := x + 1;
end;
end;
Problem tkwi w tym, że po narysowaniu układu współrzędnych punkt (0, 0) znajduje się w lewym górnym rogu Imagea, a powinien znajdować się w punkcie (100, 100) (tu bowiem jest graficzny środek układu). Na jednym forum dostałem odpowiedź, żeby do x dodać 100, a od y odjąć 100, więc wyglądałoby to tak:
Image1.Canvas.LineTo(x + 100, (a * x + b) - 100);`
Jednak dalej "coś" mi nie pasuje... Może Wy mi pomożecie? Acha, jeszcze jedno pytanie - co polecacie do rysowania takich wykresów - Canvas.Pixels czy Canvas.LineTo? Z góry wielkie dzięki za wszystkie odpowiedzi. Pozdrawiam!