Seite 1 von 1
Frage: Delphi 7 Koordinatensystem Finde den Nullpunkt im Canvas Objekt nicht.
#1
geschrieben 24. Mai 2011 - 12:52
Zunächst ein mal guten Tag die Damen / Herren
Ich habe folgendes Problem....
Wir haben hier bis zum 30. diesen Monats die Auflage ein Programm zu erstellen, welches Kreise in einem Koordinatensystem zeichnet, sobald man den ,,Erstellen"-Button klickt...Soweit nichts Wildes.
Danach soll man eine zweite Figur per Verschieben Button einfügen (beide sind dann zu sehen).
--> Die Werte für den Radius, X / Y Koordinaten werden in einem Feld eingegeben und per Erstellen bzw Verschieben Button benutzt.
Soviel zum Programm.
Nun habe ich folgendes Problemchen: Im Koordinatensystem fängt er grundsätzlich an ganz oben links zu zeichnen. Ergo müsste der Nullpunkt reversibel nach unten wo sich x und y - Achse schneiden verlegt werden.
Dazu habe ich schon extrem lange gegoogelt und selbst ausprobiert, aber ich finde es echt nicht heraus.
Hat eventuell jemand nen Tipp für mich?
Grüße,
Lars
Ich habe folgendes Problem....
Wir haben hier bis zum 30. diesen Monats die Auflage ein Programm zu erstellen, welches Kreise in einem Koordinatensystem zeichnet, sobald man den ,,Erstellen"-Button klickt...Soweit nichts Wildes.
Danach soll man eine zweite Figur per Verschieben Button einfügen (beide sind dann zu sehen).
--> Die Werte für den Radius, X / Y Koordinaten werden in einem Feld eingegeben und per Erstellen bzw Verschieben Button benutzt.
Soviel zum Programm.
Nun habe ich folgendes Problemchen: Im Koordinatensystem fängt er grundsätzlich an ganz oben links zu zeichnen. Ergo müsste der Nullpunkt reversibel nach unten wo sich x und y - Achse schneiden verlegt werden.
Dazu habe ich schon extrem lange gegoogelt und selbst ausprobiert, aber ich finde es echt nicht heraus.
Hat eventuell jemand nen Tipp für mich?
Grüße,
Lars
Anzeige
#2
geschrieben 24. Mai 2011 - 13:05
Das Koordinatensystem hat den Ursprung (wenn du es mal an deinem Monitor vergleichst) in der linken oberen Ecke. Ist eigentlich etwas dämlich gemacht, aber du musst deine Koordinaten ändern.
Ich bezweifle, dass man den Ursprung einfach verlegen kann. Wenn ja wird das wohl auch komplizierter sein, als die Koordinaten einfach zu ändern.
Ich bezweifle, dass man den Ursprung einfach verlegen kann. Wenn ja wird das wohl auch komplizierter sein, als die Koordinaten einfach zu ändern.
#3
geschrieben 24. Mai 2011 - 13:48
Guten Tag auch von meiner Seite,
Arbeitet ihr vielleicht mit einer Klasse Bildschirm oder ähnliches?
Ich kenn das so aus dem Informatik Unterricht, dass der Bildschirm als Klasse zur Verfügung steht und dann über die Anfrage derBildschirm.hLaenge oder Sowas die Länge bekommt. Und dann muss man die aktuelle Position des Zeicheninstrumentes halt als hälfte von v und h Position setzen und um x/y verschieben.
Ist im Moment ein wenig schwierig dir zu helfen, da wir im Info Unterricht mit vordefinierten Klassen gearbeitet haben. Ob ihr das auch so macht weiß ich nicht. Ein Weg, das ganze ohne solche vordefinierten klassen ist mir nicht bekannt, da ich ausserhalb der Schule mich nicht so mit Delphi beschäftige.
Grüße
Arbeitet ihr vielleicht mit einer Klasse Bildschirm oder ähnliches?
Ich kenn das so aus dem Informatik Unterricht, dass der Bildschirm als Klasse zur Verfügung steht und dann über die Anfrage derBildschirm.hLaenge oder Sowas die Länge bekommt. Und dann muss man die aktuelle Position des Zeicheninstrumentes halt als hälfte von v und h Position setzen und um x/y verschieben.
Ist im Moment ein wenig schwierig dir zu helfen, da wir im Info Unterricht mit vordefinierten Klassen gearbeitet haben. Ob ihr das auch so macht weiß ich nicht. Ein Weg, das ganze ohne solche vordefinierten klassen ist mir nicht bekannt, da ich ausserhalb der Schule mich nicht so mit Delphi beschäftige.
Grüße
#4
geschrieben 24. Mai 2011 - 18:09
Ne arbeiten wohl nicht mit vordefinierten Klassen.
Nagut ok, dann muss ich mit dem Fehler leben, denn ich habe echt KEINE AHNUNG wie ich das ändern kann.
Den Quelltext mag ich hier nicht posten, da es nachher heißt, ich hätte kopiert - falls der Lehrer den Beitrag hier findet
Bis denne
Nagut ok, dann muss ich mit dem Fehler leben, denn ich habe echt KEINE AHNUNG wie ich das ändern kann.
Den Quelltext mag ich hier nicht posten, da es nachher heißt, ich hätte kopiert - falls der Lehrer den Beitrag hier findet
Bis denne
#5
geschrieben 24. Mai 2011 - 19:31
Es ist unwahrscheinlich, dass dein Lehrer dich hier unter deinem Nickname findet
#6
geschrieben 25. Mai 2011 - 11:20
Sonst jemand pauschal ne Ahnung, wo der 0 Punkt in Canvasobjekten sein könnte?
gruß,
Lars
gruß,
Lars
#7
geschrieben 25. Mai 2011 - 11:37
Die Frage wurde doch schon beantwortet, in der linken oberen Ecke. Angenommen Dein Canvas hat 1000x1000 Pixel. Wenn Du den Nullpunkt zum Zeichnen in die Mitte (500x500) setzen willst, muß Du alle Koordinaten entsprechend umrechnen. Ein Punkt, der bei logisch 10,20 liegen soll, ist auf dem Canvas dann bei 510,480 (500+10,500-20). Das macht man so mit allen Punkten.
#8
geschrieben 26. Mai 2011 - 08:06
Ja ok.
Ich fände es gut, wenn ich den 0 Punkt genau nach unten links verschieben könnte, wo sich die beiden Achsen schneiden. Allerdings habe ich exakt diesen Punkt leider noch nicht erwischt.
@Mr. Floppy: falls es dir keine Umstände macht, würdest du mir den dann sagen können`?
Viele Grüße,
Lars
Ich fände es gut, wenn ich den 0 Punkt genau nach unten links verschieben könnte, wo sich die beiden Achsen schneiden. Allerdings habe ich exakt diesen Punkt leider noch nicht erwischt.
@Mr. Floppy: falls es dir keine Umstände macht, würdest du mir den dann sagen können`?
Viele Grüße,
Lars
Dieser Beitrag wurde von dmX` bearbeitet: 26. Mai 2011 - 08:07
#9
geschrieben 26. Mai 2011 - 08:50
Hi, naja das ist doch einfach
ich habe nie Delphi programmiert, daher hoffe ich, dass du weißt was ich meine
x, canvas.height - y
dein canvas ist 100px x 100px groß.
0,0 ist ja oben links, du willst aber unten links haben.
da das canvas 100px hoch ist, ist der unterste pixel auf der Y-Achse bei 0,100
du willst jetzt 10 pixel nach oben also nach 0, 90 dann musste
0, 100 - 10 rechnen.
jetzt willst du 10 pixel nach rechts auf der X achse da nimmste
10, 100 - 10
und so weiter
MfG Karl0
ich habe nie Delphi programmiert, daher hoffe ich, dass du weißt was ich meine
x, canvas.height - y
dein canvas ist 100px x 100px groß.
0,0 ist ja oben links, du willst aber unten links haben.
da das canvas 100px hoch ist, ist der unterste pixel auf der Y-Achse bei 0,100
du willst jetzt 10 pixel nach oben also nach 0, 90 dann musste
0, 100 - 10 rechnen.
jetzt willst du 10 pixel nach rechts auf der X achse da nimmste
10, 100 - 10
und so weiter
MfG Karl0
Du bist die Nr. 1 - BLUE!!
#10
geschrieben 27. Mai 2011 - 16:23
Zitat (dmX`: 26.05.2011, 09:06)
Ich fände es gut, wenn ich den 0 Punkt genau nach unten links verschieben könnte, wo sich die beiden Achsen schneiden.
Meinst du das mit den Koordinaten so?
Y
l
l
l
l
l
0_ _ _ _ _ _ _ _ _ _X
Dann brauchst du, wie karl0 bereits schrieb nur den Y-Wert von der Canvashöhe abziehen.
Dieses Beispiel zeichnet einen Kreis mit den Koordinaten X=200, Y=200 und einem Durchmesser von 200 Pixel.
Zur Vereinfachung mit dem Befehl Canvas.Ellipse auf einer PaintBox.
Die Formatierung wird nicht richtig dargestellt ! sagte:
procedure TForm1.Button1Click(Sender: TObject);
var
h,x,y,r: Integer;
begin
h:= PaintBox1.Height; //höhe des Canvas (in dem Fall eine PaintBox)
x:= 200; //Position auf der X-Achse
y:= h-200; //Position auf der Y-Achse (beginnt durch die Subtraktion links unten)
r:= 100; //Kreisradius
PaintBox1.Canvas.Ellipse(x-r,y-r,x+r,y+r); //zeichnet den Kreis
end;
var
h,x,y,r: Integer;
begin
h:= PaintBox1.Height; //höhe des Canvas (in dem Fall eine PaintBox)
x:= 200; //Position auf der X-Achse
y:= h-200; //Position auf der Y-Achse (beginnt durch die Subtraktion links unten)
r:= 100; //Kreisradius
PaintBox1.Canvas.Ellipse(x-r,y-r,x+r,y+r); //zeichnet den Kreis
end;
In dem Fall geben die Koordinaten den Kreismittelpunkt an.
Falls du mit den Koordinaten etwas anderes meinst, melde dich.
Alle sagten es geht nicht, da kam einer der das nicht wusste und tat es einfach.
#11
geschrieben 28. Mai 2011 - 13:15
Vielen Dank!
Ich werde es heute Abend testen und mich dann hier zurückmelden.
Bis dann
Lars
Ok, ich fürchte ich bin einfach zu deppert dafür.
Ist es möglich, dass sich mal jemand meinen Quellcode anschaut?
Ihr braucht nix dran zu machen, nur sagen an welcher Stelle ich es verbessern könnte damit er das mit dem Canvas hinbekommt?
Falls ja, per PM schick ich euch den zu.
Gruß,
Lars
Edit: @Gast, ja so in Etwa ist es gemeint.
Ich werde es heute Abend testen und mich dann hier zurückmelden.
Bis dann
Lars
Ok, ich fürchte ich bin einfach zu deppert dafür.
Ist es möglich, dass sich mal jemand meinen Quellcode anschaut?
Ihr braucht nix dran zu machen, nur sagen an welcher Stelle ich es verbessern könnte damit er das mit dem Canvas hinbekommt?
Falls ja, per PM schick ich euch den zu.
Gruß,
Lars
Edit: @Gast, ja so in Etwa ist es gemeint.
Dieser Beitrag wurde von Urne bearbeitet: 28. Mai 2011 - 15:03
#12
geschrieben 28. Mai 2011 - 15:55
Woran scheitert's denn? Kannst Du nichts auf den Bildschirm zeichnen oder verstehst Du das mit der Umrechnung nicht?
#13
geschrieben 29. Mai 2011 - 01:41
Weis leider nicht genau wie ichs sagen soll ...ohne nen Screenshot vom Programm zu posten.
Werd den Fall wohl nun so lassen wie er ist und so hochladen.
Guts Naechtle
Und danke für eure Tipps!
Werd den Fall wohl nun so lassen wie er ist und so hochladen.
Guts Naechtle
Und danke für eure Tipps!
- ← Bash: Ausgabe in einer Variable speichern
- Programmierung
- Bashscript und Problem mit automatischer Ausführung →
Thema verteilen:
Seite 1 von 1