Bild aufhellen

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von lris08.

    Bild aufhellen

    Hallo,

    hab schon gesucht, aber irgendwie Hirnblockade...

    Mit was für einen Behehl kann ich ein Bild aufhellen??


    z.B. so:

    Bild.heller

    Mein Code derzeit:

    VB.NET-Quellcode

    1. PicBox1_Breite = pb1.Width
    2. Dim a_H = (pb1.Height / 3 * 2) - 11
    3. Dim a_W = pb1.Width
    4. Dim c_H = (pb1.Height / 3 * 2) / 3
    5. Dim c_W = pb1.Width
    6. Dim a As New Bitmap(Bitmap.FromFile(Doc_ThumbnailFullPfad), a_W, a_H) ' 1240, 1754)
    7. Dim c As New Bitmap(Bitmap.FromFile(Doc_ThumbnailFullPfad), c_W, (c_H + 50)) '1240, 877)
    8. c.RotateFlip(RotateFlipType.RotateNoneFlipY)
    9. Dim b As New Bitmap(pb1.Width, pb1.Height)
    10. Dim g As Graphics = Graphics.FromImage(b)
    11. g.DrawImage(a, 0, 0)
    12. Dim p As Pen
    13. p = New Pen(System.Drawing.Color.Black)
    14. g.DrawLine(p, 0, (a.Height + 5), a.Width, (a.Height + 5))
    15. g.DrawImage(c, 0, (a.Height + 11))
    16. g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
    17. Me.pb1.SizeMode = PictureBoxSizeMode.Zoom




    Alex
    guck dich dazu mal nach der sogenannten ColorMatrix um, damit kannst du Bilder ziemlich einflussreich und schnell manipulieren...

    wenn du es jedoch nur für einen Hover Effekt, oder ähnliches, also nur temporär benötigst(und zwar für dein Bildercontrol, welces du mit GDI+ machen möchtest, dann würde es genügen in der Größe des Bildes an der Position des Bildes ein weißes Rechteck mit Transparenz zu zeichnen(Color.FromArgb(128,255,255,255), 128 ist ca. die hälfte von 255 und stellt somit Halbtransparenz dar, wenn du weniger willst, verwende hier einfach einen niedrigeren Wert ;) )

    Edit: wuaah der Code^^
    du sollst die Bitmaps nicht im Paint Event laden, lade diese am besten beim Start des Projekts nur einmal in einer Variable, welche du dann nur noch übergeben musst...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    VB.NET-Quellcode

    1. Private bmp As Bitmap
    2. 'FormLoad:
    3. bmp = New Bitmap("Dateiname")
    4. 'PaintEvent:
    5. e.Graphics.DrawImage(bmp,New Rectangle(0,0,128,128))
    6. e.Graphics.FillRectangle(New SolidBrush(Color.FromArgb(128,255,255,255)),new rectnagle(0,0,128,128))

    so könnte das aussehen ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    ok soweit...

    aber wie bringe ich da noch die Position mit rein ?

    e.Graphics.DrawImage(bmp,New Rectangle(0,0,128,128))



    VB.NET-Quellcode

    1. 'alte Version mit Positionsangabe
    2. 'g.DrawImage(c, 0, (a.Height + 11))
    3. ' neu lt. VBP aber noch ohne Positionsangabe
    4. g.DrawImage(c, New Rectangle(0, 0, 128, 128))


    Das Bild wird zwar schön hell, aber an der falschen Position


    ERLEDIGT... HABS Übersehen!1

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

    Wo ist denn da der ColorMatrix?!

    guck dich dazu mal nach der sogenannten ColorMatrix um, damit kannst du Bilder ziemlich einflussreich und schnell manipulieren...

    wenn du es jedoch nur für einen Hover Effekt

    also ich vermute es ist eher für etwas wie einen Hover Effekt und temporär gedacht...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Abschlußfrage zu dem ganzen Malthema :)

    So füge ich sogar noch einen Text ein...

    VB.NET-Quellcode

    1. Dim f As New Font("Tahoma", 14)
    2. Dim pinsel As New SolidBrush(Color.Orange)
    3. g.DrawString(Dokumentenbezeichnung, f, pinsel, 0, (a.Height - 20))


    Gibts da auch einen Befehl, wo ich diesen Text noch mal zeichen kann, jedoch nur auf den Kopfstehend ?

    Also wie:

    VB.NET-Quellcode

    1. img.RotateFlip(RotateFlipType.RotateNoneFlipY)
    Evtl. hilft dir dieses Beispielweiter. Ansonsten kannst du die graphics,scaltransform-Methode verwenden. Mit einem negativen Scalierungswert spiegelst du das nachfolgend gezeichnete. Du mußt dann nur mit der Position aufpassen, damit du nicht sonstwo zeichnest.
    Fiel Fergnügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    also da es nur um einen Text geht, wie Vatter schon richtig erkannt hat, deine Matrix sollte ca. so aussehen:

    VB.NET-Quellcode

    1. New Drawing2D.Matrix(1, 0, 0, -1, 0, Objekthöhe)

    bei Objekthöhe gibst du die Höhe des Objekts an, in welches gezeichnet wird...
    du setzt also die Transform Eigenschaft auf diese Matrix und setzt diese nach dem Zeichenvorgang des zu spiegelnden Textes zurück(New Matrix())...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---