|
Programiranje Programski jezici, tehnike, alatke... |
|
Alatke vezane za temu | Vrste prikaza |
20.7.2013, 12:30 | #1 |
Novi član
Član od: 19.7.2013.
Poruke: 7
Zahvalnice: 1
Zahvaljeno 0 puta na 0 poruka
|
[C#] Program mi vaca "null" kao parametar?
Pozdrav svima
Pravim neki program za obradu slika i naleteo sam na jedan problemcic, ako vam nije problem da mi pomognete. Nisam neki ekspert u OOP, pa se sad mucim oko prikaza slike, siguran sam da "path+file" daju sigurnu putanju, proveravao sam preko MessageBox-a, tu putanju hocu da prosledim u Form1 i prikazem sliku prvu u podrazumevanom folderu samog programa, na klik next treba da prebaci na sledecu, na previous proslu, nego se ja mucim oko ucitavanja same slike pri pokretanju, izbaci mi "value is null" gresku, ne kapiram kako moze biti null, kada sam pri inicijalizaciji same forme prvo naveo GetImages klasu, pa tek onda PropFields koja trenutno sadrzi jedan properti, u GetImages kao sto mozete videti dole u kodu implementiram properti Path iz PropFields i dajem mu vrednost putanje, dok u Form1 koristim tu putanju radi prikaza slike. Ja bih ovo verovatno resio, nego me zanima da mi neko objasni zasto ovako nece? I da li postoji neki pametniji nacin da se ovo uradi, mozda brze itd? Hvala Form1.cs Kod:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace Picture_Viewer_1._0 { public partial class Form1 : Form { private int counter = 0; private int max = 0; PropFields pf; public Form1() { InitializeComponent(); GetImages gi = new GetImages(); pf = new PropFields(); pictureBox1.BackColor = Color.Transparent; pictureBox2.BackColor = Color.Transparent; this.WindowState = FormWindowState.Maximized; } //events private void pictureBox1_MouseHover(object sender, EventArgs e) { this.Cursor = Cursors.Hand; } private void pictureBox2_MouseHover(object sender, EventArgs e) { this.Cursor = Cursors.Hand; } private void pictureBox1_MouseLeave(object sender, EventArgs e) { this.Cursor = Cursors.Arrow; } private void pictureBox2_MouseLeave(object sender, EventArgs e) { this.Cursor = Cursors.Arrow; } private void Form1_Load(object sender, EventArgs e) { this.BackgroundImage = Image.FromFile(pf.Path); } private void pictureBox2_Click(object sender, EventArgs e) { if(counter<=0) counter++; Invalidate(); } private void pictureBox1_Click(object sender, EventArgs e) { if(counter>=max) counter--; Invalidate(); } } } GetImages.cs Kod:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Windows.Forms; using System.Drawing; namespace Picture_Viewer_1._0 { class GetImages { public GetImages() { GetImage(); } private List<string> extensions = new List<string> { ".JPG", ".IMG", ".JPEG", ".PNG", ".BMP", ".ICO", ".GIF", ".JPE", }; private void GetImage() { PropFields pf = new PropFields(); string path = Directory.GetParent(Directory.GetParent(Environment.CurrentDirectory).ToString()).ToString()+@"\images\"; DirectoryInfo dir = new DirectoryInfo(path); string file = dir.GetFiles()[0].ToString(); try { foreach (string ext in extensions) { if (Path.GetExtension(file.ToUpper()) == ext) { pf.Path = path + file; } } } catch (DirectoryNotFoundException ex) { MessageBox.Show(ex.Message); } catch (FileNotFoundException ex) { MessageBox.Show(ex.Message); } } } } Kod:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Picture_Viewer_1._0 { class PropFields { public string Path { get; set; } } } |
20.7.2013, 12:48 | #2 |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.166
Zahvalnice: 2.085
Zahvaljeno 4.923 puta na 2.859 poruka
|
Re: [C#] Program mi vaca "null" kao parametar?
A šta ako je path "C:\folder" a fajl "fajl.txt", konkatenacija će dati "C:\folderfajl.txt" što nije putanja koja ti treba.
Za takve poslove koristi Path.Combine(folder, fajl); |
20.7.2013, 13:13 | #3 |
Novi član
Član od: 19.7.2013.
Poruke: 7
Zahvalnice: 1
Zahvaljeno 0 puta na 0 poruka
|
Re: [C#] Program mi vaca "null" kao parametar?
|
20.7.2013, 13:25 | #4 |
Deo inventara foruma
Član od: 29.1.2008.
Poruke: 20.482
Zahvalnice: 433
Zahvaljeno 4.007 puta na 3.729 poruka
|
Re: [C#] Program mi vaca "null" kao parametar?
jel ti vraća null za sliku ili za filepath?
|
20.7.2013, 13:55 | #5 |
Novi član
Član od: 19.7.2013.
Poruke: 7
Zahvalnice: 1
Zahvaljeno 0 puta na 0 poruka
|
Re: [C#] Program mi vaca "null" kao parametar?
|
20.7.2013, 14:35 | #6 |
Kekule Mekule
|
Re: [C#] Program mi vaca "null" kao parametar?
U formi si samo kreirao novi PropField zvani pf ali mu nisi dodelio nikakvu putanju te je pf.Path == null kada se Load pozove. Ti zapravo kolko vidim mislis da je pf globalna varijabla a ona to u stvari nije - pf koji menjas u GetImages klasi je razlicita promenljiva od pf u klasi Form.
|
Sledeći korisnik se zahvaljuje korisniku Andross na korisnoj poruci: | ||
DocNet (20.7.2013) |
20.7.2013, 14:50 | #7 | |
Novi član
Član od: 19.7.2013.
Poruke: 7
Zahvalnice: 1
Zahvaljeno 0 puta na 0 poruka
|
Re: [C#] Program mi vaca "null" kao parametar?
Citat:
|
|
20.7.2013, 15:40 | #8 |
Novi član
Član od: 19.7.2013.
Poruke: 7
Zahvalnice: 1
Zahvaljeno 0 puta na 0 poruka
|
Re: [C#] Program mi vaca "null" kao parametar?
Jos samo nesto,
Da li je pametno ovako koristiti listanje slika? Kod:
private void pictureBox2_Click(object sender, EventArgs e) { if (counter <= max) { counter++; } else { counter = -1; counter++; } gi.GetImage(counter); RenderImage(); //Invalidate(); } private void pictureBox1_Click(object sender, EventArgs e) { if (counter <= max && counter>0) //5 { counter--; } else { counter = max+1; counter--; } gi.GetImage(counter); RenderImage(); //Invalidate(); } Ovde sam ga bacio u koment, jer ne obavlja posao... |
21.7.2013, 0:27 | #9 |
Član
Član od: 16.4.2010.
Lokacija: Pančevo
Poruke: 462
Zahvalnice: 41
Zahvaljeno 68 puta na 63 poruka
|
Re: [C#] Program mi vaca "null" kao parametar?
Ja jedino što ja ovde vidim da metoda getImage() ne radi ništa tj. da radi u prazno. Niti vraća neku vrednost niti setuje vrednost. Ne znam šta si hteo da postigneš ovako?
Drugo imaš kolekciju imageList. Bolje bi ti bilo da nju koristiš. Ubacuj sve slike u imageList kolekciju i prikazuj selektovanu sliku u pictureBox na formi. Imaš mnogo načina to da implementiraš. Ja ću ti samo pokazati kako da šetaš, napred i nazad, po kolekciji. Kod:
//btn next event var currentImageIndex = imageList.IndexOf(pictureBox.Image); if(currentImageIndex < imageList.Count()) pictureBox.Image = imageList[++currentImageIndex]; //btn back event var currentImageIndex = imageList.IndexOf(pictureBox.Image); if(currentImageIndex > 0) pictureBox.Image = imageList[--currentImageIndex]; |
21.7.2013, 11:12 | #10 | |
Novi član
Član od: 19.7.2013.
Poruke: 7
Zahvalnice: 1
Zahvaljeno 0 puta na 0 poruka
|
Re: [C#] Program mi vaca "null" kao parametar?
Citat:
Probacu sa ImageList, nisam nikad to koristio, ali pokusacu. Verujem da je pametnije, jer ovako zapetljavam program, samim tim ga i usporavam... |
|
Bookmarks sajtovi |
|
|
Slične teme | ||||
tema | temu započeo | forum | Odgovora | Poslednja poruka |
Vista NEkompatibilni programi (lična iskustva) | oluja | Operativni sistemi | 179 | 30.11.2011 16:37 |
Program slican kao photoinstrument | Sallee | Grafički softver i radovi | 2 | 13.11.2011 11:59 |
Program da SE k700 koristim kao daljinac od TV-a | Željko | Programi za mobilne telefone | 12 | 3.6.2011 21:12 |
Program kao MSN, samo bolji/brži? | Milolos | Aplikativni softver | 3 | 18.1.2009 21:35 |
Program autotestovi za vozacki ispit | rgdrajko | Programiranje | 27 | 30.9.2007 14:13 |