Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1551 | Anzahl registrierter User: 1841 | Besucher online: 85
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Let your image glow - Bild glühen lassen


Autor: Timo Boehme
Sprache: VB.NET
Bewertung: 9
(1 Bewertung)
Anzahl der Aufrufe: 4187
  
Kick it on dotnet-kicks.de  

Beschreibung:

In vielen Anwendungen ist man mit eigenen Bildern unterwegs. Dabei möchte man sich gerne um die Programmierung kümmern und ggf. erst später um die Grafiken. Mit dieser Funktion kann man eine Bildkopie erstellen, welche eine Art Glüheffekt erstellt. Damit kann man Bilder erstellen für EIN / AUS Modi.

Abgelegt unter: image, bitmap, luminance, helligkeit, glühen.



Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
   ''' <summary>
            ''' Let any source image glow.
            ''' Copyright by Timo Boehme, www.goldengel.ch
            ''' </summary>
            ''' <param name="bmSrc">An bitmap with image. Example 64x64 Pixel icon.</param>
            ''' <returns>A brighten sourceimage with some glowing like effekt.</returns>
            ''' <remarks>'*1) Variant: Check out to let some channels at zero. For example only take
            ''' the green channel to change the luminance.</remarks>
            Public Function CreateGlowingImage(ByVal bmSrc As Bitmap) As Bitmap
                Dim i As Integer                'Helper
                Dim m As Integer                'Bytes per Pixel to work with
                Dim R1, G1, B1 As Integer       'Source Red, Green, Blue
                Dim R2, G2, B2 As Integer       'Result Red, Green, Blue
                Dim D As Integer                'luminance to add
                Dim L As New List(Of Point)     'List to store areas to widen
                Dim Pt As Point                 'point helper

                'if no image is available, we can not do anything
                If bmSrc Is Nothing Then Return Nothing

                Dim bm As Bitmap = bmSrc.Clone 'Lets us make a copy. Not nessesary but will keep away support questions.

                'convert any image indexed image into an RGB24 image
                If bm.PixelFormat <> Drawing.Imaging.PixelFormat.Format32bppArgb And bm.PixelFormat <> Drawing.Imaging.PixelFormat.Format24bppRgb Then
                    Dim Bm2 As New Bitmap(bm.Width, bm.Height, Drawing.Imaging.PixelFormat.Format24bppRgb)
                    Using gr As Graphics = Graphics.FromImage(Bm2)
                        gr.DrawImage(bm, New Point(0, 0))
                    End Using
                    bm = Bm2
                End If

                'unlock the image data for reading and writing
                Dim bts As Drawing.Imaging.BitmapData
                bts = bm.LockBits(New Rectangle(0, 0, bm.Width, _
                    bm.Height), Drawing.Imaging.ImageLockMode.ReadWrite, bm.PixelFormat)

                'bytes per pixel (default = 3 for 24BPP images)
                m = 3
                If bm.PixelFormat = Drawing.Imaging.PixelFormat.Format32bppArgb Then m = 4

                'change the luminance for each pixel
                Dim X, Y As Integer
                For Y = 0 To bm.Height - 1
                    For X = 0 To bm.Width - 1
                        Pt = New Point(X, Y)
                        i = ((Y * bts.Stride) + (X * m))

                        R1 = System.Runtime.InteropServices.Marshal.ReadByte(bts.Scan0, i + 2) 'Red
                        G1 = System.Runtime.InteropServices.Marshal.ReadByte(bts.Scan0, i + 1) 'Green
                        B1 = System.Runtime.InteropServices.Marshal.ReadByte(bts.Scan0, i + 0) 'Blue
                        D = 50
                        If L.Contains(Pt) Then
                            D = 80
                            L.Remove(Pt)
                        End If
                        'brighten up the image
                        R2 = Global.System.Math.Min(255, R1 + D) '*1
                        G2 = Global.System.Math.Min(255, G1 + D) '*1
                        B2 = Global.System.Math.Min(255, B1 + D) '*1
                        System.Runtime.InteropServices.Marshal.WriteByte(bts.Scan0, i + 2, CByte(R2))
                        System.Runtime.InteropServices.Marshal.WriteByte(bts.Scan0, i + 1, CByte(G2))
                        System.Runtime.InteropServices.Marshal.WriteByte(bts.Scan0, i + 0, CByte(B2))

                        If (R1 + G1 + B1) > (200 + 200 + 200) Then
                            L.Add(New Point(X, Y + 1))
                            L.Add(New Point(X + 1, Y))
                            L.Add(New Point(X + 1, Y + 1))
                        End If
                    Next
                Next

                bm.UnlockBits(bts)
                Return bm
            End Function
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)



Diese Snippets könnten für Sie interessant sein:
[VB.NET] Invert Colors from Image
[VB.NET] Resize image to fit in picturebox
[C#] Bild beim Zeichnen invertieren
[C#] Square Thumbnail generieren
[ASP.net] Datei nach Bildupload prüfen
[C#] Change PixelFormat
[VB.NET] Durschnittsfarbe eines Bildes ermitteln
[C#] Image in IPictureDisp umwandeln
[C#] Bild drehen (nach Winkelangabe)
[C#] Image zu Base64 konvertieren und zurück
[C#] Image in string wandeln und zurück
[C#] Bildgröße im Verhältnis verändern (Interpoliert)
[C#] Bild von einem Control oder Panel
[VB.NET] Bildausschnitt auslesen
[VB.NET] Bildgröße im Verhältnis verändern (Interpoliert)
[VB.NET] Bildgröße prozentual verändern (Interpoliert)
[VB.NET] Bildgröße in beiden Dimensionen verändern (Interpoliert)
[C#] base64 codierten String in eine Bitmap umwandeln
[C#] Bitmap in base64 codierten String wandeln
[C#] Image aus URL laden
[C#] Bilder verkleinern, beschneiden und beides gleichzeitig
[VB.NET] Bytearray to Image / Image to Bytearray
[C#] Bild splitten
[C#] Text2Bitmap (String in Bild umwandeln)
[C#] Hintergrundfarbe Transparenter Bilder (z.B. PNG) ändern
[C#] Größe eines Bildes mit mit gleichem Seitenverhältniss ändern
[C#] WPF: Image aus dem Web in Image-Element anzeigen
[C#] Bitmap schneller in Graustufen wandeln
[C#] ISO-Abbild von einer CD/DVD erstellen
[C#] old Windows Forms Image to new WPF Image
[C#] SystemIconsImageListWrapper
[VB.NET] Bildgröße verändern (Verhältnis)
[VB.NET] Bildgröße verändern (Prozentual)
[VB.NET] Bildgröße verändern (Manuell)
[C#] Floyd Steinberg Dithering
[C#] Bitmap in Graustufen wandeln
[C#] Größe verändern von Bildern
[VB.NET] Bitmap Differenz Analyse
[VB.NET] Bitmap Header auslesen (File & Info)
[C#] Bitmap in Icon konvertieren
[C#] ExtractAssociatedIcon
[C#] Bilder aus *.resx Ressourcen Dateien in WPF verwenden
[C#] Custom Cursor
[C#] Bild rotieren mit C#

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.