Jeg er igang med et lille program, der kan måle afstande på et kort. I prinsippet skal der afsættes et kordinat, når man kliker, som skal forbindes med det næste og det næste og...
Koordinaterne skal være flytbare, så man kan rykke rundt på nøglepunkterne senere, og så vil jeg gerne vide hvordan jeg kan gemme alle disse koordinater i et enkelt felt i en access database.
Nogen der ved hvordan man kan lave et sådan program?!?
Men du misforstår meningen med eksperten og du beder om er fuldstændig hen i vejret. Eksperten er til at få hjælp til et konkret problem eller hjælp til at blive guidet i den rigtige retning. I bund og grund spørger du om nogen kan lave et basalt GIS program.
Hvad er det for kort og hvad er formatet? Hvorfra kendes størrelsesforhold? Skal der regnes med storcirkler eller kan simpel geometri gå an? Skal der tages højde for 2D kortets manglende even til at vise skalaforhold korrekt?
Start dog med at dele opgaven op i håndterbare størrelser. Forsøg dig frem og spørg til konkrete problemer i stedet for at slynge en sådan smøre ud. Når du så har lært at flytte rundt på streger og punkter på skærmen, så er det at gemme det i et enkelt felt grundliggende viden.
For en hærdet programmør er svaret på dit spørgsmål Ja, men du starter på et alt alt for højt niveau.
Tror du misforstår mig en lille smule, og det er nog fordi jeg er for dårlig til at formulere mig. Jeg ønsker ikke et færdigt program. Jeg åbner en billed fil af et kort (bmp, jpg, gif), og med canvas tegner jeg nogle streger efterfulgt af hinanden. Denne del virker fint nok (fik ikke lige det skrevet i sp.) Problemet består nu i 2 ting.
1. Hvordan gemmer jeg de koordinater, så jeg senere kan bruge dem? Skal jeg bare smide dem efterhinanden, med et separatortegn og så smide dem i min db? -> virker lidt for simpelt...
2. Hvordan kan jeg senere lave så jeg kan flytte rundt på mine hjørnepunkter?
Al beregninger af målestok og afstand mm, bygger på simpel geometri, som heller ikke er noget problem.
1. Din ide er da ok. x,y;x,y etc eller blot x,y,x,y,x,t 2. Først skal du gemme alle dine hjørnekoordinater i en array. Når der så klikkes (fanges med OnMouseClick finder du det hjørne der er klikket på ved at søge om musekoordinaterne ligger 'inden for hjørnet'. Eksempel ud af hovedet ikke testet eller noget:
var Corners : array[0...499] of TPoint; nCorners : integer; idxClicked : integer; procedure OnMouseDown(X,Y) var i : integer; begin for i := o to nCorners - 1 do if (X >= (Corners[i].X - 5)) and (X <= (Corners[i].X + 5)) and (Y >= (Corners[i].Y - 5)) and (Y <= (Corners[i].Y + 5)) then begin idxClicked := i; // nu har du indexed på det hjørne der blev klikket på Break; end; end;
procedure OnMouseUp(X,Y) begin Corners[i] := Point(X,Y); RedrawAllCorners; // gentegn det hele... end;
Kan du komme videre med dette?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.