VB.2012 Paint Programm Problem bei der Programmierung

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    VB.2012 Paint Programm Problem bei der Programmierung

    Hallo Communis,

    Ich habe folgendes Problem. Ich zeiche auf einer Picturebox eine Line. Das funktioniert soweit. Dann kommt das Problem, sobald ich die Maustaste loslasse verschwindet der Strich wieder. Ich will
    a) die Line soll da bleiben.
    b)er soll auch dann da bleiben wenn ich weitere Linien zeichne

    Kann mir da jemand helfen?
    Willkommen im Forum. :thumbup:
    Mit etwas weniger Holzhammer mal etwas mehr Prosa:
    Die Paint-Routine malt die GUI / ihr Control "aus dem Gedächtnis".
    Das bedeutet, dass alles, was gemalt werden soll, einzeln zum Malen bereitgestellt werden muss.
    Wenn Du während MouseMove eine wie auch immer geartete Kurve darstellen willst, die auch stehen bleibt, musst Du 2 Bedingngen erfüllen:
    1. MouseMove muss Bescheid sagen, dass und was gezeichnet werden soll,
    2. die GUI muss wissen, was gezeichnet werden soll.
    Machen wir es am Beispiel der Linie.
    MouseDown stellt den Startpunkt der Linie bereit, er wird in einer Klassenvariable gespeichert.
    MouseMove sagt, dass die Linie einen neuen Endpunkt hat. Dieser wird also in einer anderen Klassenvariable gespeichert, außerdem wird per MyControl.Invalidate() gesagt, dass etwas gezeichnet werden soll.
    Hier springt die Paint-Routine an.
    Sie muss sich jetzt den Start- und den Endpunkt nehmen und die Linie malen.
    Das macht sioe, solange Du mit MouseMove über Deine GUI streichst.
    Bei MouseUp ist die Linie nun final.
    Wir nehmen den Start- und den aktuellen Endpunkt und speichern ihn in einer List(Of MEINE_LINIEN) ab, z.B. einer Struktur aus 2 Point's.
    So. In der Paint-Routine musst Du nun wissen, ob gerade eine MouseMove-Linie und / oder die fertigen Linien dargestellt werden sollen.
    Das bekommst Du aber nun selber raus. Tipp: Private flag As Boolean
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    ups - mein Holzhammer reicht ja nichtmal hin - ich hab das mitte Maus-Interaktion total übersehen.
    Also etwas Maus-Interaktion gibts in Control mit beweglicher Figur, und in StoryCards

    Aber nicht die Interaktion, die du meinst.
    Aber das Prinzip: Man braucht intelligente Klassen, die sich selbst zeichnen können, und man braucht eine Zeichenfläche, die auf User-Eingaben reagiert.
    Auf diesem Prinzip bauen beide samples auf, und mit Outlined und ziehbare Schrift liesse sich sogar was basteln, was Zeichnungen auch abspeichert.