Picture Box i skrolovanje slike

Picture Box i skrolovanje slike

offline
  • Pridružio: 03 Apr 2006
  • Poruke: 7

dakle.. pravim neki programcic koji treba da radi sa slikama i imam jedan problem.. napravio sam da otvara sliku i picture boxu velicine 480x640 i da se slika otvara normalno, znaci puna velicina.
dakle sliku otvaram sa

Dim bmp As New Drawing.Bitmap("putanja")

napravio sam i skrol barove koji rade ako je slika veca od 480x640. e sad ovo mi je najveci problem...

kako da prikazem trenutnu sliku?? to sam resio tako sto sam napravio

Dim TrenutniProzor As New Drawing.Bitmap(480, 640)

ali ovde mi je najgluplji potez to sto kopiram iz bmp u TrenutniProzor pixel po pixel, sto je naravno mnoogo sporo a treba dosta brzo da se desava pri skrolovanju... da li to mogu da resim na neki drugi nacin? pokusao sam da nabasam na nesto sto bi mi omogucilo da npr pixel (x,y) sa bmp bude skroz gode levo u picture boxu, ali nisam uspeo...



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12402

Kako mislis trenutnu sliku? Objasni sta zelis, da ucitas sliku trenutno ili ?



offline
  • Pridružio: 03 Apr 2006
  • Poruke: 7

trenutna slika je u stvari deo slike. ako je slika 1600x1200 a moj picure box je 480x640 ta trenutna slika mi je u stvari deo velike slike i velika je 480x640 kao i picturebox.
trenutnu sliku pravim sa getpixel/setpixel u 2 for petlje od velike slike.
to je ono sto sam ja radio Smile

moje pitanje je u principu kako najbre i najlakse skrolovati sliku u pictureboxu?

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12402

Aj posalji mi primer Zipovan u exe. Ja mislim da je najbrze samo postavi scrolove i kucaj kod. Aj posalji ja cu da probam sada da napravim scrool.

Dopuna: 03 Maj 2008 0:58

Probaj ovo :

Private Sub Form_Load() ‘ Postavljanje svojstva ScaleMode na piksele. Form1.ScaleMode = vbPixels Picture1.ScaleMode = vbPixels ‘ Svojstvo AutoSize se postavlja na True kako bi se ‘ okvir kontrole Picture2 pro{irio na veli~inu slike. Picture2.AutoSize = True ‘ Postavljanje svojstva BorderStyle oba okvira na None. Picture1.BorderStyle = 0 Picture2.BorderStyle = 0 ‘ U~itavanje slike. Picture2.Picture = LoadPicture(“c:\Windows\Winlogo.bmp”) ‘ Pokretanje pozicioniranja oba okvira. Picture1.Move 0, 0, ScaleWidth – VScroll1.Width, _ ScaleHeight – HScroll1.Height Picture2.Move 0, 0 ‘ Postavljanje vodoravne klizne trake. HScroll1.Top = Picture1.Height HScroll1.Left = 0 HScroll1.Width = Picture1.Width ‘ Postavljanje okomite klizne trake. VScroll1.Top = 0 VScroll1.Left = Picture1.Width VScroll1.Height = Picture1.Height ‘ Odre|ivanje svojstva Max za klizne trake. HScroll1.Max = Picture2.Width – Picture1.Width VScroll1.Max = Picture2.Height – Picture1.Height ‘ Odre|ivanje ho}e li slika-dijete popuniti ekran. Ako ho}e, ‘ nema potrebe za kori{tenjem klizna traka. VScroll1.Visible = (Picture1.Height < Picture2.Height) HScroll1.Visible = (Picture1.Width < Picture2.Width) End Sub

Dopuna: 03 Maj 2008 1:00

Ovo meni radi za Scrool

Dopuna: 03 Maj 2008 1:04

El znas mozda kako da sacuvam i ucitam sliku preko common dialoga. Znam za text ali nece nikako za sliku jer ide drugi name. Hvala nadam se da ti radi scrool.

offline
  • Pridružio: 03 Apr 2006
  • Poruke: 7

evo deo koda koji radi sve sto sam napisao... malo sam se njakao , pa je mozda nesto i nezavrseno, ali to je u principu to. da, ovo je visual studio 2008...

Private Sub OpenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenToolStripMenuItem.Click         If OpenFileDialog1.ShowDialog() = DialogResult.OK Then             FileCopy(OpenFileDialog1.FileName, "C:\temp.bmp")             Dim bmp As New Drawing.Bitmap("C:\temp.bmp")             H = bmp.Height             W = bmp.Width             Label5.Text = W & " X " & H             'podesavanje skrol barova             If (H < 640) Then VScrollBar1.Enabled = 0             If (H > 640) Then                 VScrollBar1.Enabled = 1                 VScrollBar1.LargeChange = (H - 640) / 10                 VScrollBar1.Maximum = (H - 640) * 1.1             End If             If (W < 480) Then HScrollBar1.Enabled = 0             If (W > 480) Then                 HScrollBar1.Enabled = 1                 HScrollBar1.LargeChange = (W - 480) / 10                 HScrollBar1.Maximum = (W - 480) * 1.1             End If             PrikazTrenutnogProzora(bmp)         End If     End Sub Function PrikazTrenutnogProzora(ByRef bmp)         VScrollTrenPos = VScrollBar1.Value         HScrollTrenPos = HScrollBar1.Value         For Me.y = VScrollTrenPos To VScrollTrenPos + 640 - 1             For Me.x = HScrollTrenPos To HScrollTrenPos + 480 - 1                 If (x < W And y < H) Then                     TrenutniProzor.SetPixel(x - HScrollTrenPos, y - VScrollTrenPos, bmp.GetPixel(x, y))                 Else : TrenutniProzor.SetPixel(x - HScrollTrenPos, y - VScrollTrenPos, Color.White)                 End If             Next x         Next y         PictureBox1.Image = TrenutniProzor     End Function Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick         'iscrtavanje slike ako su slajderi pomereni         If ((VScrollTrenPos <> VScrollBar1.Value) Or (HScrollTrenPos <> HScrollBar1.Value)) Then             Dim bmp As New Drawing.Bitmap("C:\temp.bmp")             PrikazTrenutnogProzora(bmp)             bmp.dispose()         End If         'ispis koordinata misa ako je on na slici         If (KoordinataX() < W And KoordinataX() >= 0 And KoordinataY() < H And KoordinataY() >= 0) Then             Label9.Text = KoordinataX()             Label10.Text = KoordinataY()         Else             Label9.Text = "-"             Label10.Text = "-"         End If     End Sub


u kodu gore imas i otvaranje slike, a za save koristim ovo:

bmp.save("putanja")

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12402

Brate ti radis u 8. Ja sam ti pisao kod za Visual Basic 06 Sad

offline
  • Pridružio: 03 Apr 2006
  • Poruke: 7

ovo je tacnije 9 Smile jeste, mnogo stvari se izmenilo... i to me mnogo nervira. radio sam malo sa vb5 a sad kad sam uzeo ov da napravim vec sam sve bio zaboravio, pa reko ako cu vec uciti ucicu najnovije Smile

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12402

Ok ja nemogu da ti pomognem onda poz :'(

Ko je trenutno na forumu
 

Ukupno su 718 korisnika na forumu :: 7 registrovanih, 0 sakrivenih i 711 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Bobrock1, esx66, mnn2, raketaš, ruger357, suton, uruk