Poslao: 02 Maj 2008 23:26
|
offline
- BurekUSvemiru
- Novi MyCity građanin
- 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.
|
|
Poslao: 02 Maj 2008 23:43
|
offline
- Srki94
- Mod u pemziji
- Pridružio: 14 Feb 2008
- Poruke: 12402
|
Kako mislis trenutnu sliku? Objasni sta zelis, da ucitas sliku trenutno ili ?
|
|
|
|
Poslao: 03 Maj 2008 00:35
|
offline
- BurekUSvemiru
- Novi MyCity građanin
- 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
moje pitanje je u principu kako najbre i najlakse skrolovati sliku u pictureboxu?
|
|
|
|
Poslao: 03 Maj 2008 01:04
|
offline
- Srki94
- Mod u pemziji
- 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.
|
|
|
|
Poslao: 03 Maj 2008 01:07
|
offline
- BurekUSvemiru
- Novi MyCity građanin
- 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")
|
|
|
|
|
Poslao: 03 Maj 2008 01:13
|
offline
- BurekUSvemiru
- Novi MyCity građanin
- Pridružio: 03 Apr 2006
- Poruke: 7
|
ovo je tacnije 9 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
|
|
|
|
|