GDI (DrawImage) Feher

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Cross.

    GDI (DrawImage) Feher

    Hey,
    ich hab folgendes Problem:

    Wenn ich versuche mit der Maus ein Bild mit GDI auf eine Form zeichnen will kommt immer:

    Quellcode

    1. Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.


    Mein Code:

    VB.NET-Quellcode

    1. Dim g As Graphics
    2. Dim _bild As Image = My.Resources.tree
    3. g.DrawImage(_bild, 10, 10, 10, 10)


    Egal ob ich das im Paint-Event mache oder im Click-Event..

    Ich hoffe ihr könnt mir helfen...
    STEAM-PROFIL // CS:GO'LER // WEBSEITE
    dim g as graphics = form1.creategraphics
    sonst weiß VB ja nicht worauf du zeichnen möchtest^^

    allerdings zeichne besser im paint-event der form, dann mittels e.graphics (bsp: e.graphics.drawimage(....))
    möchtest du auf ein bild (also eine bitmap) zeichnen funst das mittels dim g as graphics = graphics.fromimage(DeineBitmap)

    achso: im click-event solltest du nicht zeichnen. du kannst aber den zeichnenvorgang (sofernt er im paint-event ist) auslösen indem du schreibst: formxy.invalidate
    CreateGraphics() sollte man nicht benutzen. Im Paint-Event schon dreimal nicht. Nimm das Graphics-Objekt aus den PaintEventArgs:

    VB.NET-Quellcode

    1. Dim g As Graphics = e.Graphics

    Viele Grüße, Phil.
    OK danke!
    Das im Paintevent geh...
    Aber wie mache ich , wenn man über mousedown was zeichen will, da ha e.Graphics sich ja aufs PaintEvent bezieht....

    //edit: Ich habs so gelöst=> mit mousdown wird einfach das paintevent refresht...

    Das problem ist aber dass kein neues image hgezeichnet wird sonder einfach nur verschoben
    STEAM-PROFIL // CS:GO'LER // WEBSEITE

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Cross“ ()

    Wie wäre es statt:

    VB.NET-Quellcode

    1. Dim g As GraphicsDim _bild As Image = My.Resources.tree g.DrawImage(_bild, 10, 10, 10, 10)



    dass zu machen:

    VB.NET-Quellcode

    1. Dim g As GraphicsDim _bild As New Bitmap = My.Resources.tree g.DrawImage(_bild, 10, 10, 10, 10)



    !!!WICHTIG, Code ist UNGETESTET!
    Und eine Frage. Wieso sind immer meine VB - Highlights immer auf einer Zeile Dargestellt. Das nervt mich total!!
    Auch hier:

    Quellcode

    1. Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.


    Entweder ich bin zu blöd oder ... mir fällt nix ein.

    Ich veruche es nochmal zu erklären:

    Ich habe ein Panel (darauf wird gezeichnet).

    Jetzt will ich mit der Maus darauf ein Baum oder n Auto etc... malen bzw zeichen (mit Gdi)
    STEAM-PROFIL // CS:GO'LER // WEBSEITE
    dann mach einen doppelklick auf den panel, du landest standartmäßig im paint-event von diesem
    dort einfach mittels e.graphics.drawLine(...) etc zeichnen.

    .creategraphics ist nicht empfehlenswert, da dir dann alles mögliche dazwischenpfuschen kann sodass das ergebnis verfälscht werden kann


    zum thema "mit maus darauf zeichnen". so einfach ist das nicht! um das zu realisieren musst du dir überlegen wie du das anstellst.
    im mousdown und mousup event kannst du feststellen wann die maustaste gedrückt wird, im mouseMove-event wie sich der zeiger bewegt.
    durch code (den ich dir jetzt nicht sage) in diesen events kannst du z.b. eine list(of point) mit mauskooridanten befüllen und diese dann im paint-event darstellen lassen.
    wie du das im endeffekt machst bleibt dir überlassen, das nur so als tipp