Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: [VB.NET] Grafiikan lataus ohjelmaan

NanoSoft [31.12.2005 00:06:20]

#

Miten voisin ladata vaikka jaska.png:n ohjelmaani (ei pictureboxiin) niin, että sitä pystyisi liikutella jne.?
Käyttäisin sitä tapaa tason[/kentän/kartan] lukuun ja piirtoon.
Saako sitä mitenkään tähän muotoon:

private sub PiirraKartta(Byval KarttaNum as integer)
'Kartan piirto toiminto
End Sub

ja käyttö: esim. form_loadissa PiirraKartta(1)

Metabolix [31.12.2005 03:22:33]

#

Eiköhän se näkymätön PictureBox (tai sen kuvankäsittelystä vastaava osa) ole paras vaihtoehto. Niitä voi luoda taulukkoon tai dynaamiseen tietorakenteeseen sopivan määrän. Muilta osin tuo kysymys oli vähän epämääräinen. Totta kai voit tehdä funktion, joka saa parametrinä kartan numeron ja piirtää oikean kartan.

NanoSoft [31.12.2005 11:53:58]

#

en kuitenkaan ole onnistunut siinä, enkä halua kuvalaatikoita!

Niko [31.12.2005 12:02:59]

#

teet image tyyppisen muuttujan sillä on FromFile() -funktio
sitten piirto komennoilla saaat tehtyä yhden kuvan kaikista
ja laitettua sen esimerkiksi pictureboxiin tai jonnekki muualle...

Jotenkin näin:

Dim a As Image = Image.FromFile("jaska.png")
Dim b As Graphics = Graphics.FromImage(a)
Dim kaikki As New Bitmap(640, 480)
Dim c As Graphics = Graphics.FromImage(kaikki)

c.DrawImageUnscaled(kaikki, New Point(x, y))

panttu [03.01.2006 20:35:44]

#

VB:lle valmista koodia ei löyty, mutta pienellä miettimisellä nuo luokkien käyttö ratkeaa c# koodeista, joita löytyy täältä http://www.publicjoe.f9.co.uk/csharp/tut.html

BadSource [04.01.2006 07:30:00]

#

VB6:ssa on valmis kontrolli, PictureClip, jolla voi helposti käsitellä kuvaa osissa. Osien vain pitää olla tasasuuruiset, jolloin pystyy määrittelemään riveinä ja sarakkeina, miten moneen osaan kuva pilkotaan. Kontrollin nimi on Microsoft PictureClip Control 6.0.

Seuraavan esimerkin formilla on PictureClip-, PictureBox-, ja kaksi Command-kontrollia.

'Koodi Visual Basic 6:lle.
Option Explicit

Private indexi As Integer 'pidetään kirjaa aktiivisesta kuvasta

Private Sub Form_Load()
    With Me.PictureClip1
        .Picture = LoadPicture("F:\Images\Babe01.jpg") 'Huom! Vaihda viittaus kuvaan
        .Rows = 2
        .Cols = 4
        Me.Picture1.AutoSize = True
        Me.Picture1.Picture = .GraphicCell(indexi) 'esitetään ensimmäinen ruutu
    End With
End Sub

Private Sub Command1_Click() 'kelataan kuvia eteenpäin
    With Me.PictureClip1
        'koska PictureClip:n kuvat lasketaan nollasta lähtien, viimeinen kuva on (rivit * sarakkeet - 1)
        indexi = IIf(indexi = .Rows * .Cols - 1, 0, indexi + 1)
        Me.Picture1.Picture = .GraphicCell(indexi)
    End With
End Sub

Private Sub Command2_Click() 'kelataan kuvia taaksepäin
    With Me.PictureClip1
        indexi = IIf(indexi = 0, .Rows * .Cols - 1, indexi - 1)
        Me.Picture1.Picture = .GraphicCell(indexi)
    End With
End Sub

Vaikka esimerkissäni käytän PictureBox:a, niin tuo on vain esimerkki. Kuvan voi ladata minne haluaa ja tehdä sille mitä haluaa, kun se keran on saatu esiin PictureClip:n avulla.

Edit: Esimerkki (koko kontrolli?) VB6:lle, sillä luetun ymmärtäminen ennen ensimmäistä kahvikupillista takkuaa...

Vastaus

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

Tietoa sivustosta