Otočení obrázku   zodpovězená otázka

VB.NET

Ahoj, zkoušel jsem podle návodu na těchto stránkách vykreslit graf. Přidal jsem prvek timer aby načítání grafu bylo animované. jen mám pořád problém s otočením vzhůru nohama. Chtěl jsem to řešit prostě tak, že celý nakreslený obrázek otočím pomocí:

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click


       
        Me.PictureBox1.Image.RotateFlip(RotateFlipType.Rotate180FlipNone)
      




    End Sub

ale obrázek se mi něják ne a ne otočit (zkoušel jsem to i s obrázkem který jsem tam zadal natvrdo-tj. nevykreslzuju ho kodem). Ale s obrázkem se nic nestane.Můžete mi prosím poradit?:)

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

Zkuste

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

  Me.PictureBox1.Image.RotateFlip(RotateFlipType.Rotate180FlipNone)
      
Refresh()
    End Sub
 

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

Moc děkuji, takže obrázek se otočil, jen nepřekreslil:)

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

Tak mám další problémek. Výše uvedené funguje pouze když dám natvrdo do pictureboxu nějáký obrázek. Pokud ale něco na picture box vykreslím kodem otočení nefunguje:(

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

Tam budete muset postupovat asi trošičku jinak.

Pokud si dobře vzpomínám, tak by tam měly být 2 cesty:

1) pokud chcete Vaši transformaci aplikovat na jeden, nebo několik málo prvků, tak tyto místo na vykreslovací plochu (graphics) nakreslíte do GraphicsPath, na ten pak transformaci aplikujete a pak již transformované vykreslíte na graphics metodou DrawPath.

2) nebo transformaci aplikujete přímo na vykreslovací plochu (graphics), a pak se tato transformace použije pro všechny objekty na tuto graphics vykreslované po aplikaci té transformace.

Zkuste polaborovat, když tak odpoledne bych se na to kouknul konkrétněji.

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

Tak jsem to vyřešil pomocí

Me.PictureBox1.Image = New Bitmap(Me.PictureBox1.Width, Me.PictureBox1.Height)

Inspiraci jsem našel v této diskuzi. Někdo se ptal jak obrázek ukládat. Toto je v podstatě stejné. Mně jde o to ž mám animovaný graf kde pomocí timeru vždy zvětším hodnotu obdélníku který představuje graf o 5, takže graf je animovaný (postupně roste) a když dosáhne určitě hodnoty kterou načtu z databáze (např. počet kusů čehokoliv) růst se zarazí a začne se vykreslovat druhý sloupec.(takže sloupce rostou postupně tj. nevykreslují se současně).

Takže pokud bych to celé nejdříve kreslil a pak až obracel, sloupce by rostli od hora dolů a pak se až vše obrátilo, což by nebylo pěkné.

Podařilo se mi to vyřešit tak že vždycky když něco vykreslím všechno otočím. Docela do funguje:) Teď se vrhnu na animované "připlutí" popisků:)

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

No a právě tak (jak popisujete svou potřebu) by to mělo fungovat s tou transformací aplikovanou na prvek Graphics.

nadefinujete si kreslicí plochu (třeba na tom svém pictureboxu), aplikujete na ni požadovanou transformaci a pak již jen normálně vykreslujete (a ono to bude brát v potas tu transformaci stále, dokud ji nezrušíte).

Ale pokud jste to vyřešil jinak, je to jistě také možné.

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