Autor Beitrag
Zeterijus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20

Win XP
D2005 Prof
BeitragVerfasst: Sa 10.04.04 13:13 
Hallo,

ich habe ein kleines Problem: Und zwar bin ich gerade dabei so eine Art Liniendiagramm zu programmieren. Das Problem ist aber, dass das Diagramm nur in einem bestimmter Bereich gezeichnet werden soll. Es kann aber gut sein, dass einzelne Punkte außerhalb liegen. Was ich gerne machen würden ist den Clip Bereich manuell so einzuschränken, dass außerhalb liegende Punkte nicht mehr gezeichnet werden, aber die Linien trotzdem noch in diese Richtung gehen.

Hier mal ein paar Bilder was ich meine . . .
so sieht es aus: user defined image

und so will ich es haben user defined image. (das Bild habe ich natürlich selbst nachbearbeitet . . .)

Ich muss also irgendwie den Zeichenbereich einschränken. Hat jemand eine Idee, wie das geht?
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: So 11.04.04 08:56 
hilft dir canvas.cliprect ?

grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: So 11.04.04 08:57 
programmier doch ein abfrage, ob die werte in dem anderen bereich sid oder nicht und zeichne sie dann einfach nciht !

_________________
In the beginning was the word.
And the word was content-type: text/plain.
umpani
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 389



BeitragVerfasst: So 11.04.04 11:48 
Mit der Abfrage kann es leider nicht funktionieren, da ja dann die ganze Linie nicht gezeichnet wird.
Es soll jedich nur der Teil nicht gezeichnet werden, der über der X-Achse liegt.

Du mußt also mit rechenoperationen für rechtwinklige Dreiecke arbeiten.. 8)

Hier ein Bild zu verdeutlichung :
user defined image

Ich gehe davon aus, dass der Standort der X-uny-Achse bekannt ist (also du weißt, wo du nicht zeichnen möchtest.
Es gilt: a1/a2 = b1/b2

b1 ist die Hypothenuse des Rechtwinkligen Dreiecks: a1,b1,xachse


Für dein Problem brauchst Du die Koordinaten , wann die grüne Linie die x-Achse kreuzt.

nach Pytagoras:

a²+b² = c²
für uns
a1²+x² = b1²
also
b1²-a1² = x²

also
qw(bq²-a1²)=x


die .x-Wert des Kreuzungspunkts zur X-Achse liegt also um qw(bq²-a1²)=x verschoben zum Startpunkt der Linie. Der Y-Wert ist gleich dem Y-Wert der X-Achse (bekannt).

Gruß Umpani

_________________
Lernen, ohne zu denken, ist eitel; denken, ohne zu lernen, ist gefährlich. Konfuzius
Zeterijus Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20

Win XP
D2005 Prof
BeitragVerfasst: So 11.04.04 12:19 
Zitat:
hilft dir canvas.cliprect ?

Nein, ich habe zu erst auch gehofft, dass mir das helfen könnte. Aber dies ist eine Read-Only Eigenschaft. Ich kann den Bereich also nicht ändern, sondern nur auslesen. Dann werde ich wohl rechnen müssen . . .

Ich dachte, dass es vielleicht in Delphi einen passenden Befehl dafür gibt; so wie früher bei Turbo Pascal setviewport. So hieß der, glaube ich . . lange ist es her.