Onko VB2008:ssa mahdollista muuttaa valokuva halutun muotoiseksi?
Pienennös, suurennus, kääntely ja jopa vinoneliö onnistuu, mutta kun haluaisin PictureBox1:n kuvan siirrettyä Picturebox2:een niin, että kuvan kulmat ovat pisteissä (10,10), (200,30), (208,167), (43,120), eli siis kuva pitäisi vääntää hieman omituiseen muotoon...
Tuon koodin pitäisi venyttää kuva minkä tahansa nelikulmion sisään:
Dim kuvio(3) As Point Function LaskeKohta(ByVal l As Integer, ByVal k As Integer, ByVal x As Integer, ByVal y As Integer) As Point Return New Point( _ (kuvio(0).X * (k - y) + kuvio(3).X * y) * (l - x) / k / l + _ (kuvio(1).X * (k - y) + kuvio(2).X * y) * x / k / l, _ (kuvio(0).Y * (l - x) + kuvio(1).Y * x) * (k - y) / k / l + _ (kuvio(3).Y * (l - x) + kuvio(2).Y * x) * y / k / l) End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim vanha As Bitmap, uusi As Graphics vanha = PictureBox1.Image uusi = PictureBox2.CreateGraphics Dim tayte As New SolidBrush(Color.Black) Dim leveys, korkeus As Integer leveys = PictureBox1.Image.Size.Width korkeus = PictureBox1.Image.Size.Height Dim x As Integer, y As Integer Dim osa(3) As Point kuvio(0) = New Point(10, 10) kuvio(1) = New Point(200, 30) kuvio(2) = New Point(208, 167) kuvio(3) = New Point(43, 120) For x = 0 To leveys - 1 For y = 0 To korkeus - 1 osa(0) = LaskeKohta(leveys, korkeus, x, y) osa(1) = LaskeKohta(leveys, korkeus, x + 1, y) osa(2) = LaskeKohta(leveys, korkeus, x + 1, y + 1) osa(3) = LaskeKohta(leveys, korkeus, x, y + 1) tayte.Color = vanha.GetPixel(x, y) uusi.FillPolygon(tayte, osa) Next Next End Sub
Kiitoksia, hyvin toimii! (Lie tuota Laskekohta funktiota pähkäilty ilta jos toinenkin ;-)
VB:ssä itsessään ei kuitenkaan taida olla valmiita vääntelyfunktioita, samaan tapaan kuin DrawImage?
Onkos joku taistellut kuvien liittämisen kanssa. Siis esimerkiksi kun kootaan panoraamakuva useasta erillisestä kuvasta. Kuvien liittämisessä täytyy tehdä jossain kohtaa häivytys, jossa tasaisesti siirrytään kuvasta toiseen. Kuvat voivat tietenkin olla hieman vinossa, kun se kamera ei aina ole vaaterissa. Ja vielä niin, että kuvia voi olla sekä sivusuunnassa että korkeussuunnassa... Liekö joku tehnyt tähän algoritmit?
Aihe on jo aika vanha, joten et voi enää vastata siihen.