"merlin" skrev d. 10-07-02 15:11 dette indlæg :
> Hej,
>
> Jeg har nogle problemer med at tegne i canvas.
> Jeg vil gerne have lavet en slags graf.
> Jeg har en funktion som tar imod to tal: x og y. (floating points)
> Den skal så først afrunde tallene så de blir integers da man jo ikke
kan
> tale om fx halve pixels på skærmen.
> Så skal den gå X henad grafen og gå (screen.height div 2)-y op ad
grafen.
>
> jeg har tænkt mig noget kode i stil med.
>
> var
> x,y:double;
> ix,iy:integer;
> begin
> iX:=Round(x);
> iY:=Round(Y);
> iY:=(Screen.Height div 2)-iY;
>
> With Form1.Image1.Canvas do
> begin
> MoveTo(0,Screen.Height div 2); //gå til midten af skærmen
> //helt til venstre??
> LineTo(x,y);
> end;
> end;
>
> Men det virker ikke.
> Kan nogen forklare hvorfor?
> Evt. nogle andre forslag til hvordan problemet kan løses?
>
> Mvh
> Thomas
>
>
Nedenstående er en form med en knap og et image på. Der er afprøvet og
virker.
unit Unit1;
interface
uses
Windows, Classes, Controls, ExtCtrls, Forms, StdCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure tegnLinie(x, y: double);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.tegnLinie(x, y: double);
begin
With Form1.Image1.Canvas do
begin
MoveTo(Image1.Height div 2, Image1.Height div 2); //gå til midten
af skærmen
LineTo(round(x), round(y)); // tegn linie ud fra midten
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Top:= 0;
Image1.Left:= 0;
Image1.Width:= 420;
Image1.Height:= 420;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
tegnLinie(random(400), random(400));
end;
end.
Mvh.
Aftershock
--
Leveret af:
http://www.kandu.dk/
"Vejen til en hurtig løsning"