Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: VB 2005 ja kuvaan kirjoitus

AimoKulaus [24.10.2006 21:25:25]

#

Yksinkertainen homma? En vaan osaa, mutta osaako joku?

Eli formille picturebox ja neljä Buttonia.
Kun painaa eka nappia, niin pictureboksiin ladataan kuva "C:\kuva.jpg"
Kun painaa nappia 2, niin kuvan päälle kirjoitetaan "Hello World"
Kun painaa nappia 3, niin kuvaan piirretään punaisenkukertava viiva pisteestä (100,100) pisteeseen (300,250)
Kun painaa nappia 4, niin kuva tallennetaan nimellä "C:\kuva2.jpg"

Kun katson sitten kuva2.jpg:tä jollain muulla ohjelmalla, niin SIINÄ KUVASSA NÄKYY nuo tekstit sun muut.

Metabolix [29.10.2006 19:30:30]

#

Käsittääkseni jotakuinkin näin:

  1. Google -> VB.Net Load JPEG

    Kuva.Image = System.Drawing.Image.FromFile("MyImage.jpg")
  2. Google -> VB.Net Draw Text PictureBox
    http://vbcity.com/forums/topic.asp?tid=28582

    Dim g As Graphics = Graphics.FromImage(Kuva.Image)
    g.DrawText() ' Katso MSDN:stä tarvittavat parametrit.
  3. Google -> VB.Net PictureBox Line

    Dim g As Graphics = Graphics.FromImage(Kuva.Image)
    Dim myPen As Pen = New Pen(Color.Blue, 3)
    g.DrawLine(myPen, 100, 100, 300, 250)
  4. Google -> VB.Net PictureBox Save

    Dim fStream As New FileStream("kuva2.jpg", _
                FileMode.Create, FileAccess.ReadWrite, _
                FileShare.None, 4096, True)
    Kuva.Image.Save(fStream, System.Drawing.Imaging.ImageFormat.Jpeg)

En ole testannut enkä takaa oikeellisuutta (ei ole VB.Netiä käsillä), mutta sen ainakin takaan, että Googlen avulla noihin löytyy varsin pienellä vaivalla vastauksia, joten etsipä itsekin.

AimoKulaus [30.10.2006 15:14:30]

#

Kiitoksia. Tässä toimiva koodi. Lisäsin vielä viidennen napin, eli Lopeta-napin.

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        PictureBox1.Image = System.Drawing.Image.FromFile("C:\kuva1.jpg")

    End Sub

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

        Dim g As Graphics = Graphics.FromImage(PictureBox1.Image)

        Dim drawString As [String] = "Kukkuu"   ' Create string to draw.

        Dim drawFont As New Font("Arial", 16)   ' Create font and brush.
        Dim drawBrush As New SolidBrush(Color.Red)

        Dim x As Single = 15                    ' Create point for upper-left corner of drawing.
        Dim y As Single = 15

        g.DrawString(drawString, drawFont, drawBrush, x, y) ' Draw string to screen.
        PictureBox1.Refresh() ' Tämä pitää olla

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Dim g As Graphics = Graphics.FromImage(PictureBox1.Image)
        Dim mypen As Pen = New Pen(Color.Blue, 4)
        g.DrawLine(mypen, 100, 100, 300, 150)
        PictureBox1.Refresh()

    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

        PictureBox1.Image.Save("C:\kuva2.jpg")

    End Sub
    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

        End

    End Sub

End Class

feenix [30.10.2006 15:58:23]

#

Ja sitten huomio: jos lataat kuvan joka on indeksoiduilla väreillä eikä täysväreillä, piirtokomennot heittävät poikkeuksen.

Vastaus

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

Tietoa sivustosta