× Aktuálně z oboru

SHIELD Experience Upgrade 7 – méně hledání a více zábavy [ clanek/2018052902-shield-experience-upgrade-7-mene-hledani-a-vice-zabavy/ ]
Celá zprávička [ clanek/2018052902-shield-experience-upgrade-7-mene-hledani-a-vice-zabavy/ ]

Práce s grafikou XV. – Osm barev

[ http://programujte.com/profil/27-jiri-chytil/ ]Google [ ?rel=author ]       [ http://programujte.com/profil/75-martin-zak/ ]Google [ :?rel=author ]       3. 5. 2006       12 259×

Jak vytvořit obraz jen z 8 barev? Efekt se dá použít různě, ale není příliš častý, někdy se pomocí něj dají pěkně upravovat portréty, od popartových plakátů to má sice hodně daleko, ale snad se to někomu shodne.

Kód je maximálně jednoduchý, k použití této procedury jsou třeba dva parametry a těmi jsou PictureBox, se kterým budeme pracovat, a práh. Práh udává místo, ve kterém dochází k přelomu. Rozhodu je se o tom, zda hodnota pro barvu bude 0, nebo 255.


Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Public Sub EightColor(Img As PictureBox, prah As Long)
    Img.DrawWidth = 1
    Img.ScaleMode = 3
    Img.AutoRedraw = True
    RGBMax = 256
    On Error Resume Next
        For x = 0 To Img.ScaleWidth
            For y = 0 To Img.ScaleHeight
                DoEvents
                Imgp = GetPixel(Img.hdc, x, y)
                b = Imgp \ RGBMax \ RGBMax
                g = (Imgp \ RGBMax) Mod RGBMax
                r = Imgp Mod RGBMax
                If r >= prah Then r = 255
                If g >= prah Then g = 255
                If b >= prah Then b = 255
                If r <= prah Then r = 0
                If g <= prah Then g = 0
                If b <= prah Then b = 0
                Call SetPixel(Img.hdc, x, y, RGB(r, g, b))
            Next y
            DoEvents
        Next x
    Img.Refresh
End Sub

Článek stažen z webu Programujte.com [ http://programujte.com/clanek/2006043006-prace-s-grafikou-xv-osm-barev/ ].