Kopírování obrázku pixel po pixelu   otázka

VB.NET, WinForms, Grafika

Dobrý den.

Prosím o radu

Spojit a různě kombinovat obrázky se mi už daří, ale nevím jak vzít jeden obrázek a z něj vytvořit nový obrázek pixel po pixelu.

Chtěl bych třeba ukládat pixely v opačném pořadí a udělat zrcadlový obraz. Samotný proces bych uměl, ael vůbec nevím jak načíst pixel např (1,1) a uložit ho třeba na (150,1).

 Dim pictureX As New Bitmap(150, 150)
    Dim myGraphics As Graphics
    Dim canvas = Graphics.FromImage(pictureX)

canvas.DrawImage(picture1, 20, 30, 60, 30) ' Takhle vykreslím jen původní 1.jpg, jen měním velikost a pozici

Pokud se to tu už někde řešilo, tak mi pomůže i odkaz. Děkuji :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak barvu pixelu asi dotsnu takhle, ale nevím jak ho teď vykreslit do Plátna PictureX

Dim clr As Color = picture1.GetPixel(1, 1)
        canvas.setpixel(1, 1, clr)'To nefunguje
canvas.drawpixel(1, 1, clr) 'To také ne

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No, pokud to chcete dělat pixel po pixelu:

Public Function Prevrat(ByVal b1 As Bitmap) As Bitmap
    Prevrat = New Bitmap(b1.Width, b1.Height)
    For x As Integer = 0 To b1.Width - 1
        For y As Integer = 0 To b1.Height - 1
            Prevrat.SetPixel(b1.Width - x, b1.Height - y, b1.GetPixel(x, y))
        Next y
    Next x
End Function

Pamatujte si ale, že tyto věci se dají udělat lépe pomocí transformací...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Cykly by měly být od nuly, v .NETu se obecně pro jednoduchost všechno čísluje od nuly.

Nejlepší je to dělat pomocí transformací - mělo by stačit nastavit ScaleTransform se souřadnicemi (-1, 1), tím se to převrátí.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Omlouvám se, spíchnul jsem to bez vyzkoušení. Kód jsem opravil, nyní by měl fungovat...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Možno toto...

Imports System.Drawing
'....
 Dim a, x1, y1, x2, y2, R, B, G As Integer
Dim myBitmap1, myBitmap2 As New Bitmap(PictureBox1.Image)
Dim farba As Color
'....

R = myBitmap1.GetPixel(x1, y1).R
B = myBitmap1.GetPixel(x1, y1).B
G = myBitmap1.GetPixel(x1, y1).G
'napr.
R = R+a
B = B+a
G = G+a
farba = Color.FromArgb(255, R, G, B)
'....
myBitmap2.SetPixel(x2, y2, farba)
'....
PictureBox1.Image = myBitmap2


ostatné je len o cykloch http://vbnet.cz/clanek--30-vb_net_od_zac...

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback