Blur für PictureBox?

  • VB.NET

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

    Blur für PictureBox?

    Hallo zusammmen,

    ich habe schon lange im Internet gesucht, jedoch fand ich nur endlos komplizierte Blur-Funktionen ...
    Ich brauche eine Blur-Funktion für das verschieben von Bildern in einer PictureBox:
    Beim Schieben sollte das Bild unscharf sein,
    und beim loslassen wieder scharf.
    Ich habe bereits Funktionen gefunden, jedoch alle nur sehr kompliziert und schwer
    in mein Projekt einzubauen.
    Am besten wäre eine Funktion, die etwa so aussähe:
    - Blur(PictureBox1.Image, 3 (Stärke der Unschärfe) )

    Wenn jemand eine solche (oder ähnliche) einfache Funktion hat,
    bitte schreiben .

    VisualBasic-Frager

    Edit by nikeee13: Schriftart angepasst

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

    Schreib dir einfach ne Funktion die dir mithilfe von GDI+ nen Gauß'schen Weichzeichner über den Inhalt der Picturebox laufen lässt, bzw. über den Ausschnitt der Picturebox, den du weichgezeichnet haben möchtest. Sowas wie Blur(Picturebox, Stärke) gibts nicht, außer du schreibst es dir selbst.

    Im übrigen solltest du:
    1. Grundlagen lernen
    2. Standard Formation deiner Schrift verwenden.
    1. Grundlagen kann ich :D
    2. Wie programmiere ich denn nun einen Gauß'schen Weichzeichner? (Code-Beispiel?) ?(


    Edit by Manschula: (IKEA-Sprech) Kannst du auch Boardregeln? --> Unnötiges Vollzitat entfernt, Formatierung angepasst

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

    1. Aufgrund deiner Fragen wage ich das zu bezweifeln.
    2. Winforms sind veraltet -> Verwende WPF. Da haste z.B. schon nen fertigen BlurEffekt welcher sogar noch auf der Grafikkarte läuft. Du kannst natürlich auch eigene Effekte schreiben was ebenfalls wesentlich einfacher und vorallem performanter ist als winforms gdi. [XAML] WPF Eigene Effekte leicht gemacht


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    @EiPott: Was soll das "Progress" in dem Code deiner Verlinkung??? Meinem VB-Editor ist das fremd. Die Webseite sagt da
    auch nichts zu.

    @thefiloe: In WPF kenne ich mich nicht gut aus. Mein Projekt ist derweil sehr groß geworden und deshalb
    betrachte ich den Umstieg auf WPF als schwer. In WPF heißen die Controls auch ziemlich anders.
    Und Grundlagen beherrsche ich :D nur Ich weiß zu dem Thema hier keine Lösung.

    VisualBasic-Frager


    Edit by Manschula: Unnötiges Vollzitat entfernt, Formatierung angepasst

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

    So groß ist das bestimmt nicht. Nur bei WPF musst du so ziemlich alles was Design angeht neu lernen. Button_Click gibts da nicht mehr(oder macht man nicht mehr). Dafür gibts halt was besseres. Ist immer so.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Wenn es dir nur um "Unschärfe" geht dann kann man das so in etwa lösen:

    VB.NET-Quellcode

    1. Dim orig_bmp As Bitmap
    2. Private Function Unschaerfen(ByVal bmp As Bitmap, ByVal effect As Integer) As Bitmap
    3. Dim formating As Double = bmp.Width / bmp.Height
    4. Dim bmp_buff As New Bitmap(CInt(bmp.Width / effect), CInt(bmp.Width / effect * formating))
    5. Dim g As Graphics = Graphics.FromImage(bmp_buff)
    6. g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
    7. g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBilinear
    8. g.DrawImage(bmp, 0, 0, bmp_buff.Width, bmp_buff.Height)
    9. g.Dispose()
    10. Dim bmpfin As New Bitmap(bmp.Width, bmp.Height)
    11. g = Graphics.FromImage(bmpfin)
    12. g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
    13. g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBilinear
    14. g.DrawImage(bmp_buff, 0, 0, bmp.Width, bmp.Height)
    15. g.Dispose()
    16. Return bmpfin
    17. End Function
    18. Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
    19. orig_bmp = CType(PictureBox1.Image, Bitmap)
    20. PictureBox1.Image = Unschaerfen(CType(PictureBox1.Image, Bitmap), 8)
    21. End Sub
    22. Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
    23. PictureBox1.Image = orig_bmp
    24. End Sub


    mfG

    Derfuhr

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

    Super Code! Hat gut funktioniert!
    Genau das, was ich wollte.
    Danke

    VisualBasic-Frager


    Edit by Manschula: Unnötiges Vollzitat entfernt, Formatierung angepasst

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

    Hey @VisualBasic-Frager:,

    schön, dass dein Problem erfolgreich behandelt wurde. Beachte bitte, dass deine Beiträge durch die Moderation bearbeitet wurden (Hinweise beachten!). Ist ein Thema geklärt, bitte das Thema als 'erledigt' markieren (habe ich für dich übernommen).

    Viel Spaß weiterhin ...

    Gruß Manschula