Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: [VB] kuvan pienentäminen

jideko [04.01.2006 22:05:45]

#

Oon justiin alotellut vb:llä ja nyt yritän vääntää kuvien näyttöohjelmaa.
Oon yrittäny googlettaa mutta en oikeen ymmärrä.
Mulla siis on picturebox johon haen kuvan, mutta kun nuo kuvat tuppaa olemaan vähän turhan isoja. Miten saisin pienennettyä kuvat sopiviks mun pictureboxiin?
Osaisiko joku selittää selvästi että aloittelija pysyisi perässä?

Antti Laaksonen [04.01.2006 22:15:32]

#

Varmaan helpoin ratkaisu on käyttää PictureBoxin asemesta Image-kontrollia. Siinä on nimittäin valmis Stretch-ominaisuus, ja kun sen arvoksi valitaan True, kuva muuttuu suoraan halutun kokoiseksi. Imagen voi laittaa myös PictureBoxin sisään tarvittaessa.

Toinen tapa on käyttää kahta PictureBoxia. Toisen (Picture1) AutoSize on True ja Visible on False. Toiseen (Picture2) tulee varsinainen kuva. Aluksi kuva ladataan näkymättömään Picture1-kontrolliin. Sitten se kopioidaan oikean kokoiseksi Picture2-kontrolliin:

Picture2.PaintPicture Picture1, 0, 0, Picture2.Width, Picture2.Height, 0, 0, Picture1.Width, Picture1.Height

jideko [05.01.2006 15:23:27]

#

Kiitos. Sain tuon toimimaan. Tein tuolla vaikeemmalla tavalla, että sain kuvat tulostettua oikeessa suhteessa. Ehkäpä sama olis jotenkin toiminut tuolla image controllilla, mutta en jaksanut keksiä ratkaisua siihen.

Mutta nyt oon saanut ohjelmaan jo "Avaa" systeemin common dialogilla. nyt kun avaan kuvan tuolla niin siihen kuvaan jää musta läikkä kohdalle missä tuo avaa-ruutu oli. Miten saisin tuon korjattua? pitääkö kuva jotenkin päivittää?

Karpo112 [05.01.2006 16:59:13]

#

onko kuvan autoredraw ominaisuus true ?

Antti Laaksonen [05.01.2006 17:07:04]

#

Juuri tässä on ongelman ratkaisu. Kun kuvan AutoRedraw on True, sen sisältö piirretään tarpeen tullen uudestaan.

Merri [05.01.2006 17:54:24]

#

Kannattaa myös tehdä Picture2.Refresh tuon PaintPicturen jälkeen kun AutoRedraw on asetettu päälle, koska kuva ei päivity ennen kuin sen refreshaa.

Sitten näin ohimennen: tämä mahdollistaa myös helpon tuplapuskuroinnin.


Ilman AutoRedrawiakin voi elää, jos laittaa piirtämisen kuvan Picture2_Paint() proseduuriin. Tosin tällöin kuvalla ei voi olla AutoRedrawia ja jos Refreshin laittaa Paintiin, niin sen jälkeen ohjelma jää onnellisesti jumiin (koska Paint tulee kutsutuksi jatkuvalla syötöllä).

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta