VB6 - Een line trekken tussen twee shapes (o ander object)

Status
Niet open voor verdere reacties.

satriano17

Gebruiker
Lid geworden
30 sep 2012
Berichten
331
Ik zeg meteen dat ik nooit met lines gewerkt heb . Ik heb wat op het net gezocht , maar niet veel gevonden.
Mijn doel is om een simpel lijn te trekken tussen twee shapes zoals in het beeld.

Ik heb dus twee shapes op het form.

Private Sub Command1_Click()
Shape1.Left = 1440
Shape1.Top = 480
Shape2.Left = 5760
Shape2.Top = 1680

Line1.X1 = (Shape1.Left + Shape1.Top)
Line1.Y1 = (Shape2.Left + Shape2.Top)
End Sub
De lijn wordt niet getrokken tussen de twee shapes maar wel op andere plaats. Wat is de juist formule?
dank u
 

Bijlagen

  • lines.jpg
    lines.jpg
    23,3 KB · Weergaven: 46
Laatst bewerkt:
Heeft een lijn ook niet een X2 en Y2, anders staan deze op 0.
Ook zou ik kijken naar de width en de height van de shapes als je rechtsonder shape1 wil starten.
 
Laatst bewerkt:
Voorlopig is niet belangrijk waar de lijn begin op het shape
maar wel dat een lijn tussen de shapes getrokken wordt.

Omdat 1 lijn is heb ik geen Y2 en Y2 nodig. dacht ik.
zoals gezegd ken ik de juist syntax niet.
 
Laatst bewerkt:
Op die manier heb je ook een Line object nodig.
Doe het eens zo, zonder Line object:
Code:
Private Sub Command1_Click()
    Shape1.Left = 1440
    Shape1.Top = 480
    Shape2.Left = 5760
    Shape2.Top = 1680
    
    Line ((Shape1.Left + Shape1.Width), (Shape1.Top + Shape1.Height))-(Shape2.Left, Shape2.Top)
End Sub

Uiteraard kan dat met een Line object ook.
 
Opgelost, Edmoor !
Zo moest het zijn
ongelooflijk (althans voor mij)

Ik ga nu alles aanpassen en uitbreiden want wat ik gepost heb was alleen een voorbeeld.

een vraag
als in meer dan twee shapes heb bv 6 en 3 lijnen beter met een array werken of gewoon uw code uitbreiden?
want mijn bedoeling was met meerlijnen en shapes te doen.


in elke geval
bedankt !
 
Laatst bewerkt:
Heb ik nog nooit gebruikt dus kan ik wel iets over roepen maar zou een aanname zijn en heb je dus niks aan.
 
Helaas moet ik terugkomen.Want
ik dacht dat de probleem van vorige week opgeslost was.
Allemaal mijn schuld want had ik mijn doel niet duidelijk gezegd of teveel vereenvoudigd
Ik heb wel de geboden oplossing proberen te aanpassen maar gaat niet
ondanks honderden if-then /select case condities.
Ik heb ook de shapes met labels vervangt.
Mijn doel: verschillende labels met een lijn (line) verbinden
volgens de textboxen waarden.

ik heb (zie tekening in bijlage) 9 textboxen als input
in elke textbox kan een getal in de range 1-9 (ook gelijk waarden)
de textbox moet je altijd twee per twee nemen.

Ik heb ook dus 9 labels in cirkel.
Twee labels moet je verbinden met een lijn volgens de textbox getal.
BV. Al ik in text1 "1" heb en in text2 "2" heb dat komt een lijn tussen label1 en label2
dus steeds van label x naar label x afb.jpg

ik denk dat een simpel oplossing is zonder teveel if-then
bedankt
 
Laatst bewerkt:
Het verandert niets aan wat ik al plaatste.
Maar als je je project hier plaatst wil ik er vanavond wel even naar kijken.
 
ok. ik zal hier een test project plaatsen.
bedankt
 
Laatst bewerkt:
hier mijn test bestand.
 

Bijlagen

  • LijneneTrekkenEdmoor.zip
    1,6 KB · Weergaven: 31
Die 9 textboxes zijn niet nodig, 2 zou voldoende zijn.
Maar hier is een voorbeeld waarbij je de te verbinden labels alleen maar hoeft aan te klikken:
Bekijk bijlage LijnTrekkenEdmoor.zip
 
Interessante en fantastisch variatie, Edmoor.

Zeer doeltreffend.
Ik ga nu alles belijken en eventueel aanpassen aan mijn geval.

Zeer bedankt , Edmoor.
 
Er wordt bepaald tussen welke 2 objecten er een lijn getrokken moet worden.
Daarbij kijkt de code ook welk object het hoogste geplaatst staat en draait die twee zonodig om, in die zin dat de lijn niet van boven onder getrokken wordt maar andersom.
Dat zie je niet, maar het zorgt er wel voor dat de lijn altijd onderaan de bovenste vast zit en bovenaan de onderste.

Als je het echt netjes wilt doen kijk je ook nog of het hoogte verschil tussen beide objecten gelijk of kleiner is dan de hoogte van de objecten zelf.
In dat geval moet je niet onderaan en bovenaan verbinden maar rechts en links.
Stoei ze :D
 
Laatst bewerkt:
Ja edmoor alles duidelijk. Ik had al zoiets opgemerkt. Mooi systeem. En goed aanpasbaar. Nog bedankt voor de moeite.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan