Åbneet bmp + tegne i delphi

Tags:    delphi

Jeg vil se om det kan lade sig gøre at lave et program, der kan bestemme afstanden på fx en løberute.

Det skal fungere på den måde at man førtst tegner (punkt-punkt forbindelse) en kendt strækning, og angiver længden hvorefter den bestemme afstanden på en løberute man tegner på samme måde.

Hvordan kan jeg lave dette?!? har ikke før arbejdet med billeder i delphi.

Hvordan laver man en funktion der kan åbne et bmp billede?
Bestemmer koordinaterne for musen?
Tegner streger ved at klikke med musen? (finder koordinaterne for punkterne)



7 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato
Jeg vil se om det kan lade sig gøre at lave et program, der kan bestemme afstanden på fx en løberute.

Det skal fungere på den måde at man førtst tegner (punkt-punkt forbindelse) en kendt strækning, og angiver længden hvorefter den bestemme afstanden på en løberute man tegner på samme måde.

Hvordan kan jeg lave dette?!? har ikke før arbejdet med billeder i delphi.

Hvordan laver man en funktion der kan åbne et bmp billede?
Bestemmer koordinaterne for musen?
Tegner streger ved at klikke med musen? (finder koordinaterne for punkterne)


Du kan bruge et TImage det ligger et sted i 2 eller 3 fane ivertfald i D7.
På det kan du tegne streger og firkanter med farver og sådan.

Her er nogle koder du kan bruge:
Sætter mode: image1.Canvas.Pen.Mode := pmNotXor;
Sætter size tror jeg nok:): image1.Canvas.pen.color := clRed;
Sætter size tror jeg nok: image1.Canvas.Pen.zize := 2;

Sætter start punktet: image1.Canvas.MoveTo(0, 0);
Sætter slutpunktet: image1.Canvas.LineTo(10, 10);

Fx. her er noget kode til et nemt Elastik program som det bliver kaldt.:
Fold kodeboks ind/udKode 


Resten af koderne med at regne det ud må su selv tænke dig til
det er nok noget med en masse strings og sådan noget.

Bare sig til vis du ikke kan få det til at virke.

------------------------------------------------------
Intet er umuligt før man har prøvet, og vis ikke det virker første gang så plejer det at virke anden gang.

Darkfighter



Her er et eksempel hvor du ud over din TForm (Form1) har en TButton (Button1) og en TOpenDialog (OpenDialog1)!

Skriv først i din Button's OnClick property følgende kode...
Fold kodeboks ind/udKode 


I din form's OnPaint property...
Fold kodeboks ind/udKode 


I din Form's OnMouseMove property...
Fold kodeboks ind/udKode 

og til allersidst i din unit (lige før "End.")...
Fold kodeboks ind/udKode 


Held og Lykke
Søren Klit Lambæk

[Redigeret d. 02/04-04 13:33:09 af Søren Klit Lambæk]



Da det er en punkt til punkt forbindelse kan du regne længden, altså afstanden mellem de to pixels sådan.

P(x1, y1) = koordinatsættet for det ene punkt
Q(x2, y2) = koordinatsættet for det andet punkt

afstanden mellem dem er, set fra matematisk synsvinkel:

dist(P, Q) = SQRT( (x1 - x2)^2 + (y1 - y2)^2) )

Altså kvadratroden af de to differencer i anden :) hehe...

SQRT er vistnok også funtionskaldet i Delphi


Casper



Jeg har nu leget lidt med Canvas ud fra artiklerne om "Canvas i Delphi" her på siden, og det er da lykkedes mig at kunne tegne lige streger ved at trykke musen ned, flytte den og derefter slippe musseknappen.

Det jeg har brug for er en funktion der kan afsætte første koordinatsæt ved 1. klik på musen. Ved andet klik, skal den tegne en streg dertil, som skal fortsætte videre til tredje, fjerde osv... Hvordan gør man det?



Ret snyd det her...svarede dig på Eksperten på nøjagtigt samme spørgsmål, men det har du ikke besvaret eller givet mig point for...
_______________________________________
-----------------------{ nife}------------------------_______________________________________



Her er et eksempel hvor du ud over din TForm (Form1) har en TButton (Button1) og en TOpenDialog (OpenDialog1)!

Skriv først i din Button's OnClick property følgende kode...
Fold kodeboks ind/udKode 


I din form's OnPaint property...
Fold kodeboks ind/udKode 


I din Form's OnMouseMove property...
Fold kodeboks ind/udKode 

og til allersidst i din unit (lige før "End.")...
Fold kodeboks ind/udKode 


Held og Lykke
Søren Klit Lambæk

[Redigeret d. 02/04-04 13:33:09 af Søren Klit Lambæk]


Hej Søren Klit Lambæk

Jeg har afprøve dine koder, men i proceduren FormPaint får jeg fejmeddelser:
Fold kodeboks ind/udKode 



Fejlmeddelserne der kommer ved Compile:
Fold kodeboks ind/udKode 


Hvordan og hvor skal der rette for at undgå fejmeddelserne?

Med venlig hilsen
Monie Jacobsen

E-mail: mjs at nypost dot dk




[Error] Unit1.pas(61): Undeclared identifier: 'Bmp'
[Error] Unit1.pas(73): Undeclared identifier: 'Bmp'
[Error] Unit1.pas(82): Undeclared identifier: 'Bmp'
[Error] Unit1.pas(85): Missing operator or semicolon
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

Det fordi du ikke har defineret BMP som en TBitmap!
I aller første kode definere jeg den!

var
Bmp : TBitmap;

... det er derfor meningen at den første kode skal være øverst!
For en sikkerheds skyld kan du bare lade den være en global definering!



t