Springen naar inhoud


- - - - -
VS 2015

Drawline In Dynamische Pictureboxes

VS2015

  • Log in a.u.b. om te beantwoorden
Er zijn 3 reacties in dit onderwerp

#1 ronald.dh

ronald.dh

    Junior Developer

  • Leden
  • PipPip
  • 94 berichten
    Laatst bezocht 11 sep 2020 09:50

Geplaatst op 09 september 2020 - 16:00

Mijn form wordt helemaal ingenomen door een picturebox met daarop lijnen en een aantal kleinere pictureboxes. Het geheel moet een synoptisch bord voorstellen.
De grootte, positie... van deze lijnen én kleinere pictureboxes wordt opgehaald uit een database. De applicatie is dus statisch, alleen de database wijzigt.

De lijnen tussen de kleinere pictureboxes moeten slechts 1x getekend worden door de paint event.
De kleine pictureboxes bevatten verbindingslijnen die door een klik van de gebruiker kunnen wijzigen.

So far, so good, dit alles werkt.

De kleine pictureboxes moeten bij de start van het programma een soort "beginpositie" bevatten. Deze lijntjes worden getekend door een aparte paint event (omdat die slechts éénmalig mag uitgevoerd worden bij de start van het programma).
Maar ... deze lijnen worden niet getoond, tenzij de muis hoovert over een button o.i.d. De paint event wordt daarmee getriggerd maar het is de bedoeling dat dit gebeurd zonder ingreep van de gebruiker.
Invalidate, Refresh... helpen niet en/of geven vreemde effecten zoals het verdwijnen van de lijnen op de grote picturebox. Het probleem ontstaat dus waarschijnlijk omdat de kleine pictureboxes dynamisch worden toegevoegd tijdens form_load.

Iemand tip hoe een paint event automatisch en éénmalig kan getriggerd worden na form_load?

PS kan nog geen zinnige code meegeven omdat ik nog maar alleen "proeflapjes" heb geschreven :smile:

Dank

UPDATE: het éénmalig uitvoeren van de paint event is geen probleem, is opgelost met een boolean variabele.
Ik heb in design een statische picturebox toegevoegd om te testen. Hierin werkt de paint event wél bij het opstarten van de app.
Het probleem situeert zich dus bij de pictureboxes die worden toegevoegd tijdens form_load

#2 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1203 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 10 september 2020 - 17:08

Bericht bekijkenronald.dh, op 09 september 2020 - 16:00, zei:

Mijn form wordt helemaal ingenomen door een picturebox met daarop lijnen en een aantal kleinere pictureboxes. Het geheel moet een synoptisch bord voorstellen.
De grootte, positie... van deze lijnen én kleinere pictureboxes wordt opgehaald uit een database. De applicatie is dus statisch, alleen de database wijzigt.

Waarom pictureboxen? Teken gewoon op een bitmap in het geheugen en blit die op je form (in de paint event handler) als het nodig is.

Bericht bekijkenronald.dh, op 09 september 2020 - 16:00, zei:

Het probleem situeert zich dus bij de pictureboxes die worden toegevoegd tijdens form_load
1. Ofwel de creatie van de pictureboxen verplaatsen naar de ctor?
2. Ofwel Invalidate of Refresh?

#3 ronald.dh

ronald.dh

    Junior Developer

  • Leden
  • PipPip
  • 94 berichten
    Laatst bezocht 11 sep 2020 09:50

Geplaatst op 11 september 2020 - 09:49

Dirk,

Dank voor uw reactie.

De reden waarom ik pictureboxes gebruik is omdat de gebruiker in dat (kleine) gebied moet kunnen klikken waardoor de inhoud van die picturebox wijzigt, met telkens 2 mogelijkheden per picturebox (een flipflop, dus).
Ik had mijn eerste ontwerp met buttons gemaakt en als backgroundpicture bitmaps ontworpen (in totaal 10 verschillende mogelijkheden) maar de lijnen kwamen nooit mooi in beeld.
Nu teken ik tot op pixelniveau in de pictureboxes met veel beter resultaat.

Ik heb mijn probleem (voorlopig) opgelost door een timer toe te voegen die 100 ms na form load de inhoud van de pictureboxes gaat invullen.
Dit werkt perfect maar mogelijk is dit geen "prof" programmeer oplossing.

Uw voorgestelde oplossing(en) gaan boven mijn kennis van VB.Net. Mogelijk een extra woordje uitleg en/of een voorbeeldje, waarvoor dank.

#4 Damic

Damic

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 780 berichten
    Laatst bezocht 20 nov 2020 14:46
  • LocatieMechelen (BE)

Geplaatst op 11 september 2020 - 20:54

eens zoeken op vb.net ctor ofzo :) zullen wel wat voorbeelden rond dwarrelen.

je kunt het form show/activate sub gebruiken om je picturebox te hertekenen wanneer het nodig is

ow en picturebox.refresh is wat je zoekt :)





Ook met taq VS 2015, VS2015 voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[VS 2015] Untitled 1

Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)