Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

(VB6) lijnen tekenen en herkennen

None
16 antwoorden
  • 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]
  • je zou kunnen overwegen om met een timer de lijn stukje voor stukje t elaten tekenen. Je moet vooraf bepalen wat de X en Y waarden zijn van de getekende lijn. Als de timer loopt, kijk je naar de X en Y waarden van een nieuw te tekenen lijn.
  • 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.
  • om hoeveel lijnen gaat het nu eigenlijk ?
  • 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 ???
  • waarom zou het nietmogelijk zijn. Je hoeft niet zo te schreeuwen hoor..
  • [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.
  • 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="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, y0, x1, y1)
    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
  • Het idee van jou, Sjoerd vind ik erg goed.
    Ik denk ook dat het op die manier wel lukt, maar nu heb ik één probleem.
    Ik kan er niet achter komen met welk commando je een pixel een bepaalde kleur geeft, kan iemand mij daar een voorbeeldje van geven???
  • Teken een lijn van 1 pixel lang…
  • ja, dat kan inderdaad, maar hoe kan ik dan laten controleren of er over de volgende pixel al een lijn loopt, of hij dus al gekleurd is als ik de manier van sjoerd gebruik
  • Een pixel kan je een bepaalde kleur geven met PSet. (zie help)

    Groeten, Wouter
  • nou heb ik nog 2 kleine probleempjes:

    - hoe gebruik ik het pset-commando (mijn help doet het om de een of andere reden niet). Kan iemand me een voorbeeldcode geven.

    - hoe laat ik met een commando checken of een pixel al een bepaalde kleur heeft?? (kan dit ook met pset, zo ja hoe dan)
  • 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
  • heel erg bedankt, hiermee kan ik verder.
    Ik laat nog wel horen of het gelukt is.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.