Toon posts:

[Vb.net] Erase achter CreateGraphics

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met een programma die gebruik maakt van drawing.

Via een functie moet er telkens een andere lijn getekend worden, en de vorige lijn verwijdert worden.
DIt doe ik zo:

Visual Basic .NET:
1
2
3
4
5
6
7
   Public Function draw_line(ByVal note As String) As Integer
        Dim lijnen As Graphics = Me.Grafiek.CreateGraphics()
        ..
        ..
        lijnen.DrawLine(Pens.Blue, CInt(cX), CInt(cy), CInt(X), CInt(Y))
        lijnen.Dispose()
    End Function


Dit werkt perfect, maar ik weet niet hoe ik die lijn opnieuw kan verwijderen. Ik heb geprobeerd met een save and restore functie, maar die wordt opgeslaan in een variabele die alleen in die functie wordt onthouden.

Iemand een idee hoe ik dit kan oplossen ?

Acties:
  • 0 Henk 'm!

  • BM
  • Registratie: September 2001
  • Laatst online: 17:50

BM

Moderator Spielerij
Een lijn met dezelfde kleur als de achtergrond tekenen op de plek van de vorige lijn, en daarna pas je nieuwe tekenen?

of zoiets: lijnen.Clear(Color.White)
en daarna de lijn tekenen die je wilt.

Xbox
Even the dark has a silver lining | I'm all you can imagine times infinity, times three


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De lijn wordt getekend over een figuur zelf. Het is een soort grafiek. dus een witte/grijze lijn er over tekenen zou de lijn niet verbergen.

Ik heb ook lijnen.clear(color.transparant) geprobeerd, maar dit geeft gewoon een grijs vlak

Acties:
  • 0 Henk 'm!

  • Flard
  • Registratie: Februari 2001
  • Laatst online: 12:57
Normaal gesproken teken je in de OnPaint gewoon je figuur/achtergrond en daarna alle Lines.

Als er dan een lijn zou wegvallen (of er veranderd iets anders) dan doe je gewoon een Invalidate().
Eventueel kun je dan zelfs met (clip)regions werken zodat je alleen de relevante gedeeltes hoeft te tekenen.

Het standaard Graphics object werkt wat dat betreft als een echt papier/canvas: iets wat je erop tekent kun je er niet meer afhalen.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Op je surface is natuurlijk alleen bekend wat er op de voorgrond staat. Het zal dus ook niet mogenlijk zijn om een lijn "te verwijderen" en daardoor de achtergrond terug te krijgen.

Je zult dus je hele plaatje opnieuw op moeten bouwen. Je houd dus bij welke lijnen je getekend hebt naar je image.

Op het moment dat je een lijn verwijderd zul je die lijn uit je data moeten verwijderen en het plaatje in de goede volgorde weer opbouwen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het opgelost door de achtergrond opnieuw in te stellen, zo dus:

Grafiek.BackgroundImage = My.Resources.notes
Grafiek.Update()

Bedankt :)
Pagina: 1