AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Schnittpunkt einer Canvas.LineTo mit Komponente TButton
Thema durchsuchen
Ansicht
Themen-Optionen

Schnittpunkt einer Canvas.LineTo mit Komponente TButton

Ein Thema von Scorpion · begonnen am 23. Nov 2005 · letzter Beitrag vom 27. Nov 2005
Antwort Antwort
Seite 1 von 2  1 2      
Scorpion

Registriert seit: 3. Nov 2002
Ort: Flörsheim
154 Beiträge
 
Delphi 5 Professional
 
#1

Schnittpunkt einer Canvas.LineTo mit Komponente TButton

  Alt 23. Nov 2005, 12:28
Hallo,

ich zeichne eine Linie per Canvas.LineTo von einem Punkt zum anderen. Jetzt würde ich aber gerne feststellen, ob sich auf diesem Weg eine andere Komponente, sagen wir ein Button befindet, der geschnitten wird.

Falls dies der Fall ist würde ich nämlich gerne den Weg umleiten.

Wie kann ich das denn überprüfen ?

Gruß,
Nico
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Canvas LineTo: Überschneidung feststellen

  Alt 23. Nov 2005, 12:45
Hi,
wenn sich ein Control auf dem Canvas befinden kann, ist ei wohl eine von TWinControl abgeleitete Komponente.
Somit solltest du mit der Funktion ControlAtPos ans Ziel kommen.
Cu, Frank
Frank Reim
  Mit Zitat antworten Zitat
Scorpion

Registriert seit: 3. Nov 2002
Ort: Flörsheim
154 Beiträge
 
Delphi 5 Professional
 
#3

Re: Canvas LineTo: Überschneidung feststellen

  Alt 23. Nov 2005, 12:47
Wie könnte denn eine Lösung des Problems aussehen, hättest du code ?
Gruß Nico
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Canvas LineTo: Überschneidung feststellen

  Alt 23. Nov 2005, 12:49
Auf was zeichnest du denn?
Frank
Frank Reim
  Mit Zitat antworten Zitat
Scorpion

Registriert seit: 3. Nov 2002
Ort: Flörsheim
154 Beiträge
 
Delphi 5 Professional
 
#5

Re: Canvas LineTo: Überschneidung feststellen

  Alt 23. Nov 2005, 12:50
Auf eine PaintBox
Gruß Nico
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Canvas LineTo: Überschneidung feststellen

  Alt 23. Nov 2005, 13:51
[/delphi]Hi Scorpion,
da kannst du noch etwas tüfteln. Ich hab mal in folgendem Beispiel auf dem Canvas eine Forms einen Test gemacht:
Delphi-Quellcode:
function TForm1.LinieDurchControl(AControl: TControl): Boolean;
Var
  LinieX: Integer;
  LinieY: Integer;
  WertLinie: Extended;
  WertBtnTopRight: Extended;
  WertBtnBottomLeft: Extended;
begin
  Result := False;
  Liniex := StrToInt(Edit1.Text);
  LinieY := StrToInt(Edit2.Text);
  WertLinie := LinieX / LinieY;
  WertBtnTopRight := AControl.BoundsRect.Right / AControl.BoundsRect.Top;
  WertBtnBottomLeft := AControl.BoundsRect.Left / AControl.BoundsRect.Bottom;
  if (WertLinie < WertBtnTopRight) and (WertLinie > WertBtnBottomLeft) then
    Result := True;
  Canvas.LineTo(LinieX, LinieY);
end;
Es geht nur, wenn das Verhältnis der Punkte - hier oben rechts / unten Links verglichen wird.
Die Linie muss im Beispiel von oben links (0,0) beginnen.
Ist die Linie frei, musst du einen 0 - Punkt ermitteln und unterscheiden, in welche Richtung die Line geht. Wie gesagt, musst noch etwas tüfteln. Du musst dann alle Controls des Parent der Paintbox durchlaufen und testen.
Viel Glück!
Frank
Frank Reim
  Mit Zitat antworten Zitat
Scorpion

Registriert seit: 3. Nov 2002
Ort: Flörsheim
154 Beiträge
 
Delphi 5 Professional
 
#7

Re: Canvas LineTo: Überschneidung feststellen

  Alt 23. Nov 2005, 23:30
Hi,

das sieht ja schon nicht schlecht aus.

Nur wie kann ich die effektiven Schnittpunkte mit der Komponente bestimmen, so dass damit arbeiten kann. Würde nämlich gerne einen Weg um die Komponente zeichnen.
Gruß Nico
  Mit Zitat antworten Zitat
mare_crisium

Registriert seit: 6. Nov 2005
17 Beiträge
 
Delphi 5 Standard
 
#8

Re: Schnittpunkt einer Canvas.LineTo mit Komponente TButton

  Alt 26. Nov 2005, 16:30
Scorpion,

guck' doch mal die angefügte unit an. Da habe ich versucht, die mathematisch präzise Methode zur Schnittpunkt-Bestimmung zu programmieren und zu erklären. Die zugehörige exe-Datei ist auch dabei.

Hilft Dir das?

mare_crisium
Angehängte Dateien
Dateityp: exe spktp200_588.exe (335,0 KB, 16x aufgerufen)
Dateityp: pas spktu200_907.pas (14,1 KB, 12x aufgerufen)
  Mit Zitat antworten Zitat
Scorpion

Registriert seit: 3. Nov 2002
Ort: Flörsheim
154 Beiträge
 
Delphi 5 Professional
 
#9

Re: Schnittpunkt einer Canvas.LineTo mit Komponente TButton

  Alt 26. Nov 2005, 16:35
Hi,

vielen Dank, ich schaus mir gleich mal an... Aber könntest du bitte noch die Projektdateien von dem Bsp. posten, das wäre cool
Gruß Nico
  Mit Zitat antworten Zitat
mare_crisium

Registriert seit: 6. Nov 2005
17 Beiträge
 
Delphi 5 Standard
 
#10

Re: Schnittpunkt einer Canvas.LineTo mit Komponente TButton

  Alt 26. Nov 2005, 16:41
Scorpion,

wie geht'n das? Hab' ich noch nie gemacht!

mare_crisium
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:28 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