Bild durch Benutzer zuschneiden

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von diylab.

    Bild durch Benutzer zuschneiden

    Ich lade ein Bild in die Picturebox.

    Nun möchte ich folgendes machen:
    Wenn es geladen ist, soll der Benutzer das Bild auf den gewünschten Auschnitt zuschneiden können.

    Kann mir jemand erklären, wie ich das am Besten machen kann?

    Vielen Dank
    Du könntest dir ein Control dafür basteln - klingt schwieriger als es ist.

    Einfach eine Klasse erstellen und von Control erben lassen (inherhits control). Nun kannst du ihr diverse Eigenschaften geben - z.B. InputImage und SelectedRectangle. Im OnPaint-Sub (den du überschreiben musst, => overrides) kannst du nun anhand dieser Daten zeichnen - das Bild wird dargestellt und das SelectedRectangle markiert den entsprechenden Bereich. In den Mouse-Events kannst du auf Benutzereingaben reagieren - man kann das SelectedRectangle verschieben oder skalieren. Das sollte dir leicht fallen - sind ja nur einfache Zahlenwerte.
    Eine Function "GetSelectedImage" könnte dann den markierten Bildbereich "ausschneiden". Das passiert wie Devtronic schon sagte mit GDI indem du das InputImage verschoben auf eine neue Bitmap zeichnest.

    lg
    Du musst das Bild in eine PictureBox laden und anzeigen, dann mit MouseDown / MouseMove den Bereich markieren und bei MouseUp ausschneiden.
    Mit Graphics.FromImage() ein Graphics-Objekt erswtellen und mit GDT den entsprexchenden Teil in eine neue Bitmap kopieren und diese speichern.
    Fertich.
    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!

    vipro schrieb:

    Kann mir jemand erklären, wie ich das am Besten machen kann?

    Moin,

    jo - kann ich.
    Du brauchst ein eigenes Control mit einem Auswahlrechteck (auch Gummiband genannt), dass Du beliebig verändern und verschieben kannst.
    Danach muss die Auswahl nur ausgeschnitten werden (z.B. bei Mouseclick).
    Das ist ja dann einfach, denn die Positionen sind ja gegeben.

    Ich habe solch ein Control mal programmiert (siehe Screenshot), kann es Dir aber leider nicht einfach so überlassen.
    Aber den Weg wollte ich Dir gern zeigen.

    Viele Grüße,
    Bruno

    diylab schrieb:

    kann es Dir aber leider nicht einfach so überlassen.
    Was soll das?
    Das ist doch völlig destruktiv.
    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!

    RodFromGermany schrieb:

    Was soll das?
    Das ist doch völlig destruktiv.
    Das finde ich keineswegs!
    Ich habe dem TE die Möglichkeit aufgezeigt, wie er sein Problem lösen kann und ihm das entsprechende Verfahren und einen übergeordneten Suchbegriff erklärt.
    Das ist doch ein guter Ansatz - oder?
    Wenn er danach sucht, findet er jede Menge mehr oder weniger brauchbare Ansätze in VB.NET und C# - nur nicht mein Control, da es nicht öffentlich ist.

    Also frage ich DICH - was soll das?

    MfG,
    Bruno
    nanu? hat immer noch keiner iwas konkret zielführendes geschrieben?

    also Auswahlrechteck ist im weitesten Sinne so ähnlich.

    Ist nicht 1:1 anwendbar, aber an der einen Stelle wird gezeigt, wie man die (Drag-)Mauseingabe identifiziert, und an annerer Stelle wird gezeigt, wie man ein Rectangle auf einem Control (ein Form) darstellt.

    diylab schrieb:

    Das finde ich keineswegs!

    Du hast das Zitat von Dir in meinem Post überlesen.
    Du zeigst einem Hungernden was zu essen und sagst:

    diylab schrieb:

    kann es Dir aber leider nicht einfach so überlassen.

    RodFromGermany schrieb:

    Das ist doch völlig destruktiv.
    und nicht Dein Gummiband.
    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!