Pohyb picturebox bez použití šipek   zodpovězená otázka

VB.NET, WinForms

Zdravím, dal by se pohyb obrázku vyřešit bez nutnosti stisknutí šipek? Myslím, to tak, že se obrázek bude například pohybovat v určitých bodech vpravo a vlevo a tento pohyb se bude opakovat ?

Četl jsem si tu nějaké diskuze, ale všude se používali šipky, chtěl bych, aby se mi obrázek hýbal automaticky. Předem díky za odpověď.

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

Například použitím timeru se ti bude hýbat sám.

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

Mno to sice jo, ale chtěl jsem to vědět trošku podrobněji, tohle mi moc nenapoví.

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

Jen si to uprav :)

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        PictureBox1.Left += 5 'posune obrázek doprava o 5 bodů
        PictureBox1.Left -= 5 'posune obrázek doleva o 5 bodů
        PictureBox1.Top += 5 'posune obrázek dolů o 5 bodů
        PictureBox1.Top -= 5 'posune obrázek nahoru o 5 bodů
    End Sub
nahlásit spamnahlásit spam 0 odpovědětodpovědět

prosim te a nevis jak se da pohybovat obrazem pomoci mysi? mam to taky nadefinovat do timer1_tick???

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

Zdravim, pokud máš velký obrázek (třeba v resources), tak s ním můžeš hýbat pomocí příkazu Clone(), ten umí vyříznout z velkého obrázku jenom tu část, kterou chceš zobrazit.

vyřešil bych to takto:

'Proměnná za velký obrazek
    Dim velky As New Bitmap(My.Resources.Obrazek)

    Public Function vyriznuti(ByVal x As Integer, ByVal y As Integer)
        'Vytvoření obrázku o rozměrech PictureBoxu, do kterého budeme vyříznutý obrázek ukládat
        Dim obr As New Bitmap(PictureBox1.Width, PictureBox1.Height)

        'Samotné vyříznutí
        obr = velky.Clone(New Rectangle(x, y, PictureBox1.Width, PictureBox1.Height), Imaging.PixelFormat.Format64bppArgb)

        'Vrácení vyříznutého obrázku
        Return obr
    End Function

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Zobrazení obrázku v PictureBoxu 
        PictureBox1.Image = vyriznuti(0, 0)
    End Sub

S pozdravem Tonda...

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Teda najprv do premennej obr dáte novú bitmapu a následne ju vymeníte výstupom funkcie Clone? Zbytočne zaberete pamäť na obrázok, ktorý následne zahodíte.

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

Samozřejmě, že to jde udělat i bez té proměnné.

    Public Function vyriznuti(ByVal x As Integer, ByVal y As Integer)
        Return velky.Clone(New Rectangle(x, y, PictureBox1.Width, PictureBox1.Height), Imaging.PixelFormat.Format64bppArgb)
    End Function

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Nevadila mi tam tá premenná, aj keď súhlasím s tým, že je zbytočná.Viac mi vadilo priradenie objektu, ktorý nepotrebujeme.Vytvoriť premennú bez priradeného objektu môžete takto:

Dim <názovPremennej> As <dátovýTyp>
REM Príklad
Dim obr As Bitmap

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

Ano to máte pravdu:-)

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Trochu používajte rozum a Object Browser.Toto sú absolútne základné veci, ktoré by mal každý zvládnuť aj sám.

nahlásit spamnahlásit spam 0 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