Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Problem mit einer Weltmap und 10x10er kästchen... (https://www.delphipraxis.net/29712-problem-mit-einer-weltmap-und-10x10er-kaestchen.html)

Teklab 13. Sep 2004 17:30


Problem mit einer Weltmap und 10x10er kästchen...
 
Ja sorry scheiss überschrift.

Also ich habe in der Image1 eine Jpeg Weltkarte, auf der 10x10 pixel große
Kästchen sind *G* jetzt habe ich ein neues 10x10 Image erstellt und es so
gemacht, dass das kästchen, wenn ich auf die Weltkarte klicke rastert....
aber es funzt noch ned ganz

also MausPos X nehmen, druch 10 teilen, dann runden und mit 10 multiplizieren
dann image2 an diesen wert übergeben, das gleiche mit Y

Aber zB. bei 186 klicke ich in das 18 Kästchen aber er rundet es auf 19 und
setzt daher auch das Image2 auf 19.... ?? wie kann ich das ändern?
müßte ja irgendwie so sein.

X XX1-XX9 stelle um auf XX0 *G* also egal ob 1,2,3 oder 6,7,8 er soll immer
abrunden.

keine Ahnung ob mich nun jemand verstanden hat... :(

Nikolas 13. Sep 2004 17:33

Re: Problem mit einer Weltmap und 10x10er kästchen...
 
Eine Möglichkeit wäre div. Damit wird bei einer Division (Ganzzahl) nur der Teil vor dem Komma als Ergebniss zurückgegeben. Also 25 div 20 = 1. Damit müsstest du dir ganz elegenat was bauen können.

heiopei 13. Sep 2004 17:34

Re: Problem mit einer Weltmap und 10x10er kästchen...
 
hallo,
soweit ich weiss, tut die funktion trunc genau was du willst,
d.h. sie gibt den ganzzahligen anteil eines realwertes(etc.) zurück!

bin mir aber nich ganz sicher!!!!

heiopei

alcaeus 13. Sep 2004 17:36

Re: Problem mit einer Weltmap und 10x10er kästchen...
 
Zitat:

Zitat von heiopei
soweit ich weiss, tut die funktion trunc genau was du willst,
d.h. sie gibt den ganzzahligen anteil eines realwertes(etc.) zurück!

Ja, die Funktion macht genau das, aber die Methode von Toxman ist wahrscheinlich besser, einfach jedes / durch div ersetzen.

Greetz
alcaeus

Teklab 13. Sep 2004 17:54

Re: Problem mit einer Weltmap und 10x10er kästchen...
 
So *G* in der Zeit hab ich mir was eigenes gemacht *G* sicher voll umständlich
aber es erfüllt erstma seinen Zweck, werds aber mit div versuchen

Delphi-Quellcode:
begin
p := Image1.ScreenToClient(Mouse.CursorPos);
Wert1 := Round(p.X /10);
Wert1 := p.X - Wert1*10;
if Wert1 < 0 then
Wert1 := Round((p.X -10)/10)
else
Wert1 := Round(p.X /10);
Wert2 := Round(p.Y /10);
Wert2 := p.Y - Wert2*10;
if Wert2 < 0 then
Wert2 := Round((p.Y-10)/10)
else
Wert2 := Round(p.Y /10);
Shape1.Left := Wert1*10;
Shape1.Top := Wert2*10;
end;
SO OK habs mit Div gemacht sind ja dann auch nur 2 zeilen *G*

sakura 13. Sep 2004 17:57

Re: Problem mit einer Weltmap und 10x10er kästchen...
 
Dann mal so
Delphi-Quellcode:
begin
p := Image1.ScreenToClient(Mouse.CursorPos);
Wert1 := p.X div 10;
Wert1 := p.X - Wert1 * 10;
if Wert1 < 0 then
Wert1 := (p.X -10) div 10
else
Wert1 := p.X div 10;
Wert2 := p.Y div 10;
Wert2 := p.Y - Wert2 * 10;
if Wert2 < 0 then
Wert2 := (p.Y-10) div 10
else
Wert2 := p.Y div 10;
Shape1.Left := Wert1 * 10;
Shape1.Top := Wert2 * 10;
end;
Wert1 und Wert2 als Integer deklarieren ;)

...:cat:...

Teklab 13. Sep 2004 19:02

Re: Problem mit einer Weltmap und 10x10er kästchen...
 
Habs jetzt so und es funzt super ohne fehler *G*

Delphi-Quellcode:
var p: TPoint;
    Wert1: Shortint;
    Wert2: Shortint;
begin
p := Image1.ScreenToClient(Mouse.CursorPos);
Wert1 := p.X div 10;
Wert2 := p.Y div 10;
Image2.Left := Wert1*10;
Image2.Top := Wert2*10;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz