Ga naar inhoud

(VB6) lijnen tekenen en herkennen


Aanbevolen berichten

Hoi, Ik heb een, naar mijn mening, vrij ingewikkeld probleem. Het gaat om het volgende: Ik ben een programma aan het maken waarbij ik in een PictureBox een lijn wil laten tekenen. Dat zijn verschillende lijnen, horizontaal een verticaal. Mijn probleem is nu dat ik wil dat als ik eerst een horizontale lijn heb getekend, dat ik de code dan zo kan schrijven dat als ik daarna een verticale lijn teken, dat die lijn dan bij de eerste horizontale lijn die hij tegenkomt stopt. Hoe doe ik dat?? Om het wat duidelijker te maken heb ik hier de code voor de picturebox(de andere code is niet belangrijk hiervoor): [code:1:e04ff56dc7] Private Sub picDiagram_Click() If actor = 1 Then picDiagram.Line (0, Yklikplek)-(6675, Yklikplek) End If If actor = 2 Then picDiagram.Line (300, (Yklikplek - 300))-(6675, (Yklikplek - 300)) picDiagram.Line (0, Yklikplek)-(6675, Yklikplek) picDiagram.Line (300, (Yklikplek - 300))-(300, Yklikplek) End If If actor = 3 Then 'nu wil ik de lijn die hier naar 0 loopt, slechts tot de eerstvolgende lijn hebben picDiagram.Line (300, (Yklikplek - 300))-(6675, (Yklikplek - 300)) picDiagram.Line (0, Yklikplek)-(6675, Yklikplek) picDiagram.Line (300, (Yklikplek - 300))-(300, 0) End If End Sub[/code:1:e04ff56dc7]
Link naar reactie
Ja, maar wat nou het probleem is, ik weet niet wat de x en y waardes gaan worden, omdat die worden gekozen door de plek waar de gebruiker klikt. Ik moet dus achteraf door een ander deel van de code kunnen laten bepalen waar de horizontale lijn zit, waar de nieuwe VERTICALE lijn moet stoppen, hoe doe ik dat dan??? Geef a.u.b een code voorbeeld als dat lukt dan kan ik er zelf wel aan sleutelen.
Link naar reactie
Het gaat om een variabel aantal lijnen want er worden verschillende lijnen getekend als een gebruiker in het tekenveld klikt als hij een bepaalde knop actief heeft. Het aantal maakt echter niet uit, het gaat erom dat elke lijn die getekend wordt, de positie van de dichtsbijzijnde snijdende lijn moet weten, zodat hij daar kan stoppen. IS DIT WEL MOGELIJK ???
Link naar reactie
[quote:0edce796a9="pc_freak17"]Mijn probleem is nu dat ik wil dat als ik eerst een horizontale lijn heb getekend, dat ik de code dan zo kan schrijven dat als ik daarna een verticale lijn teken, dat die lijn dan bij de eerste horizontale lijn die hij tegenkomt stopt. Hoe doe ik dat??[/quote:0edce796a9] Je laat hem de horizontalen lijn tekenen en als je dan begint met de verticale doe je dat pixel voor pixel. Je laat hem steeds even kijken of de volgende pixel al onderdeel is van een lijn. Zo ja, dan stop je met tekenen. Kijken of de volgende pixel al in gebruik is kan bv op de volgende manieren: 1) Als je alle lijnen dezelfde kleur geeft of iig een andere kleur dan de achtergrondkleur kun je daarop vergelijken. 2) Je kan een 2dimensionale array maken van booleans. Met voor elke pixel 1. Zodra een pixel onderdeel van een lijn wordt zet je de bijbehorende boolean.
Link naar reactie
  • 4 weken later...
ok, heel erg bedankt. Ik zal het eens gaan proberen. Ik ben alleen nog niet zo goed op de hoogte van het tekenen van een lijn door individuele pixels. Ik weet dus niet hoe ik het programma laat herkennen of een pixel al bij een andere lijn hoort (of zoals jou voorbeeld, of een pixel al een andere kleur heeft). Zou je misschien een voorbeeldje kunnen geven van hoe dat moet??? (Ook het tekenen van de lijn zelf dus)
Link naar reactie
[quote:96fa0aa0bb="pc_freak17"]ok, heel erg bedankt. Ik zal het eens gaan proberen. Ik ben alleen nog niet zo goed op de hoogte van het tekenen van een lijn door individuele pixels. Ik weet dus niet hoe ik het programma laat herkennen of een pixel al bij een andere lijn hoort (of zoals jou voorbeeld, of een pixel al een andere kleur heeft). Zou je misschien een voorbeeldje kunnen geven van hoe dat moet??? (Ook het tekenen van de lijn zelf dus)[/quote:96fa0aa0bb] Ik heb wel in JAVA een tekenprogramma gemaakt, je con hier met de muis een lijn tekenen. Ik weet nie of je dit bedoel? da ging zo: g.drawLine(x0[i], y0[i], x1[i], y1[i]) x0 en y0 zijn begin van de lijn en x1 en y1 het eind. g.drawLine is een verwijzing naar mijn telken gebied (canvas). als het vaste lijnen zijn zou je begin en eind punten kunnen opgegeven (in pixel). Maar dit is in JAVA, mischien helpt het je opweg Gr TP
Link naar reactie
  • 2 weken later...
Lekker is dat vb zonder help. Heb je dus geen bal aan maar ja... Pset: Object.Pset(x,y), kleur Object is bij jou dus je picture box, x is locatie op de x as en y is locatie op de y as. Kleur kan je opgeven in RGB of in QBColor Om te kijken welke kleur een pixel heeft kan je Point gebruiken Object.Point(x,y) Hierbij is je object weer de picture box, x locatie op de x as en y locatie op de y as! Het antwoord krijg je dan in RGB code. een voorbeeldje: Picture1.PSet(10 ,10), QBColor(10) MsgBox (Picture1.Point(10 ,10)) Denk overigens aan je drawmode en de drawstyle. Succes dermee, Groeten Wouter
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...