Screenshot mit Sepia Effekt . .

  • VB.NET

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

    Screenshot mit Sepia Effekt . .

    Hallo Community . .

    In meinem nächsten Programm will ich einen ScreenShot vom Desktop machen und der soll dann langsam Sepia werden . . Einige kennen dies bestimmt aus TuneUp ( bei Registry Cleaner ) . . Weiss jemand wie ich das mit dem langsam Sepia anstelle ? . .

    ScreenSHot mache ich so : . .

    VB.NET-Quellcode

    1. Public Function CaptureScreen() As Bitmap
    2. Dim b As New Bitmap(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height)
    3. Dim g As Graphics = Graphics.FromImage(b)
    4. g.CopyFromScreen(0, 0, 0, 0, b.Size)
    5. g.Dispose()
    6. Return b
    7. End Function


    Ist ja kein Problem . .Aber wie schaffe ich es das er langsam Sepia wird ? . . ;)

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Danke ;) ..

    Ich habe mir mit GetPixel mal ein bisschen was zusammengeschnibbelt mithilfe von Gooogle ;) . .

    VB.NET-Quellcode

    1. Dim ScreenSize As Size = New Size(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height)
    2. Dim screenGrab As New Bitmap(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height)
    3. Dim g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(screenGrab)
    4. g.CopyFromScreen(New Point(0, 0), New Point(0, 0), ScreenSize)
    5. PictureBox1.BackgroundImage = screenGrab
    6. Dim X As Integer = 373
    7. Dim Y As Integer = 230
    8. Dim RWert As Integer = screenGrab.GetPixel(X, Y).R
    9. Dim GWert As Integer = screenGrab.GetPixel(X, Y).G
    10. Dim BWert As Integer = screenGrab.GetPixel(X, Y).B
    11. Dim AWert As Integer = screenGrab.GetPixel(X, Y).A
    12. MsgBox("Die Farbwerte der Bildkoordinate sind:" & _
    13. vbCrLf & "Rotanteil= " & RWert & _
    14. vbCrLf & "Grünanteil= " & GWert & _
    15. vbCrLf & "Blauanteil= " & BWert & _
    16. vbCrLf & "Alphawert= " & AWert)
    17. Dim farbe As Color = Color.FromArgb(255, 0, 0, 0)
    18. screenGrab.SetPixel(X, Y, farbe)
    19. Me.PictureBox1.Image = screenGrab


    Leider passiert nichts . . Und ich weiss ich nicht wie ich dem Ding sagen soll das er das Ganze bild nicht Sepia oder andere Farbe machen soll sondern das das ScreenShot Bild Chema erhalten bleibt ? ..
    Hi
    Schau dir mal das hier an. Ist zwar noch verbesserungswürdig, da ich den Sepia Effekt nicht so schön hingekriegt hab, aber dafür kannst du die Zahlen ja noch selber anpassen:

    VB.NET-Quellcode

    1. Public Shared Function Sepia(ByVal Bitmap As Bitmap) As Bitmap
    2. Dim bmp As New Bitmap(Bitmap.Width, Bitmap.Height)
    3. Using g As Graphics = Graphics.FromImage(bmp)
    4. Dim attributes As New ImageAttributes
    5. Dim colormatrix As New ColorMatrix(New Single()() {New Single() {1, 0, 0, 0, 0}, _
    6. New Single() {2, 1, 1, 0, 0}, _
    7. New Single() {0, 0, 0, 0, 0}, _
    8. New Single() {2, 1, 0, 0, 0}, _
    9. New Single() {-3, -1, 0, 1, 0}})
    10. attributes.SetColorMatrix(colormatrix)
    11. g.DrawImage(Bitmap, New Rectangle(0, 0, Bitmap.Width, Bitmap.Height), 0, 0, bmp.Width, bmp.Height, GraphicsUnit.Pixel, attributes)
    12. End Using
    13. Return bmp
    14. End Function


    Zum Farben im Bild ändern einfach die Zahlen in der Farbmatrix ändern (also die 1, 0, 0 , 0, 0 usw. ändern. Die Reihenfolge ist RGBA und noch ein Wert, der irgendwie nix macht ?( .

    Gruß
    ~blaze~
    Danke blaze ;) . .Werde den Code mal ausprobieren . . Habe noch eine Frage , undzwar wie Starte ich eine Public Shared Function ? .. Ich kann deine Function einfachnicht aufrufen ? . .

    Wenn ich z.b. auf einen Button : Sepia lege kommt das :

    VB.NET-Quellcode

    1. Fehler 1 Für den Parameter "Bitmap" von "Public Shared Function Sepia(Bitmap As System.Drawing.Bitmap) As System.Drawing.Bitmap" wurde kein Argument angegeben. C:\Users\timo\AppData\Local\Temporary Projects\WindowsApplication1\Form1.vb 11 9 WindowsApplication1
    Sorry aber das was unter meinem Bild steht hat leider nichts mit meinm Skill zu tun . . Ich bin eigentlich noch anfänger und habe viele Lücken , da ich noch kein Buch gelesen habe , sondern nur ein bisschen selber beigebracht habe und Google.de usw . .Deswegen weiß ich einige Grundlegende sachen einfach nicht . . =( Die Posts kamen dadurch zusammen da ich in anderen berreichen wo ich mich mehr auskenne was Posten kann . . Aber manschma weiss ich die einfachsten sachen nicht . . Sorry ;(

    Edit :

    Habe den Code jetzt mal zusammengesetzt , aber ich kann ihm nicht sagen das er die PictureBox1. als Image nehmen soll , da ein Fehler kommt das er nicht auf sie zugreifen kann . .

    Würde nemlich das gerne einsetzen . .

    VB.NET-Quellcode

    1. Dim bmp As New Bitmap(PictureBox1.Width, PictureBox1.Height)


    Kommt aber der Fehler :

    Fehler 2 Auf einen Instanzmember einer Klasse kann nicht ohne explizite Instanz einer Klasse von einer/m freigegebenen Methode/Member aus verwiesen werden. C:\Users\timo\AppData\Local\Temporary Projects\WindowsApplication1\Form1.vb 31 89 WindowsApplication1


    Bestimmt auch wieder ein kleiner fehler , mitdem Kevin sich über mich lustig machen kann ? ..

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Stifler.“ ()

    Ich mach mich nicht über dich lustig. Du musst nur sehen, Prozeduren (und deren Verwendung) sind neben Variablen so ziemlich das wichtigste und elementarste was es gibt! Wenn man Monate in VB rummacht, und dann das noch nicht weiß, naja ist halt etwas seltsam...

    Der Code geht bei mir problemlos:

    VB.NET-Quellcode

    1. Public Class Form1
    2. ''' <summary>
    3. ''' Wandelt ein Bild in Sepia um.
    4. ''' </summary>
    5. ''' <param name="Bitmap"></param>
    6. Public Shared Function Sepia(ByVal Bitmap As Bitmap) As Bitmap
    7. Dim bmp As New Bitmap(Bitmap.Width, Bitmap.Height)
    8. Using g As Graphics = Graphics.FromImage(bmp)
    9. Dim attributes As New Imaging.ImageAttributes
    10. Dim colormatrix As New Imaging.ColorMatrix(New Single()() {New Single() {1, 0, 0, 0, 0}, _
    11. New Single() {2, 1, 1, 0, 0}, _
    12. New Single() {0, 0, 0, 0, 0}, _
    13. New Single() {2, 1, 0, 0, 0}, _
    14. New Single() {-3, -1, 0, 1, 0}})
    15. attributes.SetColorMatrix(colormatrix)
    16. g.DrawImage(Bitmap, New Rectangle(0, 0, Bitmap.Width, Bitmap.Height), 0, 0, bmp.Width, bmp.Height, GraphicsUnit.Pixel, attributes)
    17. End Using
    18. Return bmp
    19. End Function
    20. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    21. PictureBox1.Image = Sepia(PictureBox1.Image)
    22. End Sub
    23. End Class
    Hat sich alles geklärt habs hinbekommen ;) . .Danke an alle . .

    Edit : @Blaze : Nein das ist wirklich kein Sepia :thumbsup: ..Aber ich spiel mal ein bisschen an den Farbreglen ;) . .

    Edit : Kevein89 : Ja ist gut , aber ich hab halt viel um die Ohren und befass mich nicht so übertrieben viel mit VB .. ;) Danke für deine Mühen aber hatte den Code jetzt selber hinbekommen . . Sieht genauso aus wie deiner nur andere Struktur ;) . .

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

    Kennt jemand zufällig den Farbcode von Sepia ? . .Hab google.de gefragt aber die wollen mir nix sagen ^^ . .

    Hab nochma ne frage zu dem Code .

    Ich habe ja :

    VB.NET-Quellcode

    1. Dim colormatrix As New ColorMatrix(New Single()() {New Single() {122, 102, 84, 0, 0}, _
    2. New Single() {2, 1, 1, 0, 0}, _
    3. New Single() {0, 0, 0, 0, 0}, _
    4. New Single() {2, 1, 0, 0, 0}, _
    5. New Single() {-3, -1, 0, 1, 0}})


    Zum farben aussuche . .Aber wie soll ich das jeztt verstehen ? . . Ich kan 25 werte eintragen aber womit erreiche ich Sepia ? . .
    Da:
    msdn.microsoft.com/en-us/magazine/cc163866.aspx

    VB.NET-Quellcode

    1. Dim colormatrix As New ColorMatrix(New Single()() {New Single() {0.393f, 0.349f, 0.272f, 0, 0}, _
    2. New Single() {0.769f, 0.686f, 0.534f, 0, 0}, _
    3. New Single() {0.189f, 0.168f, 0.131f, 0, 0}, _
    4. New Single() {0, 0, 0, 1, 0}, _
    5. New Single() {0, 0, 0, 0, 1}})


    Im Anhang noch ein Programm zum Matrix manipulieren... ist dabei entstanden

    Gruß
    ~blaze~
    Dateien
    • Color Matrix.zip

      (11,82 kB, 131 mal heruntergeladen, zuletzt: )