Načtení obrázků – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Načtení obrázků – .NET – Fórum – Programujte.comNačtení obrázků – .NET – Fórum – Programujte.com

 

petrl0
Návštěvník
1. 6. 2008   #1
-
0
-

Ahoj, potřebuju po kliknutí na tlačítko a vybrání několika obrázku, aby se mi tyto oibrázky zobrazily v okně formuláře jeden vdle druhého. Použil jsem listview a do něho se snažím našíst tyto obrázky následovně:



private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog Dialog = new OpenFileDialog();
Dialog.Filter = "Grafické soubory:" + " (*.jpg; *.gif)|*.jpg; *.gif";
Dialog.Multiselect = true;
Dialog.ShowDialog();
soubor = Dialog.FileNames;

foreach (string s in soubor)
{
PictureBox picture = new PictureBox();
picture.ImageLocation = s;
listView1.Items.Add(s); //kontrola pro mě zda se obrazek vybere
}
}


Když obrazky v dialogu zadám nechtějí se mi vytvořit picture boxy. Dělám něco špatně? Díky za pomoc

Nahlásit jako SPAM
IP: 82.150.166.–
Na fóru mě naleznete pod novým nickem => plasmo
mnn
~ Anonymní uživatel
118 příspěvků
1. 6. 2008   #2
-
0
-

sorry, ale neviem ako chces narvat obrazky do listview :) jedine ako imagelist.

musis dat nieco ako

Controls.Add(picture)

ale musis este odsadit ich (cez left a top v Position) a dat Visible = true pokial to chces ako nahlady. Avsak imho to nejde narvat do toho listviewu ako to vidis v Prieskumniku nastavenom na Nahlady (Thumbnails).

Nahlásit jako SPAM
IP: 78.98.148.–
petrl0
Návštěvník
1. 6. 2008   #3
-
0
-

Mysíš takto?:



foreach (string s in soubor)
{
PictureBox picture = new PictureBox();
picture.Location = new Point(5, 10);
picture.Size = new Size(125, 125);
picture.ImageLocation = s;
picture.Visible = true;
}

Nahlásit jako SPAM
IP: 82.150.166.–
Na fóru mě naleznete pod novým nickem => plasmo
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
2. 6. 2008   #4
-
0
-

To petrl : jj ibaze sa ti tie obrazky budu prepisovat :) musis ich odsadzovat ako som napisal tj nieco ako: a este si zabudol to pridat na formular.



i++;
picture.location = new Point(10*i,10*);
...
this.Controls.Add(picture);

Nahlásit jako SPAM
IP: 78.98.148.–
petrl0
Návštěvník
2. 6. 2008   #5
-
0
-

To Anonymní uživatel : Díky už mi to funguje :smile1: . Mám ještě jednu otázku, jak mu nastavím vlastnost stretchimage? Když to udělám normálně kódem tak mi nadává kompilátor kvuli converzi string. Přes designera to zase nejde :smile10:

Nahlásit jako SPAM
IP: 82.150.166.–
Na fóru mě naleznete pod novým nickem => plasmo
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
2. 6. 2008   #6
-
0
-

To petrl : trosku pozeraj aj do MSDN. (PictureBox.Image property)

    // Set the location and size of the PictureBox control.

this.PictureBox1.Location = new System.Drawing.Point(70, 120);
this.PictureBox1.Size = new System.Drawing.Size(140, 140);
this.PictureBox1.TabStop = false;

// Set the SizeMode property to the StretchImage value. This
// will shrink or enlarge the image as needed to fit into
// the PictureBox.
this.PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;


musis nastavit mu pevnu velkost a potom ten strechimage. Mal by si trochu samostatnosti mat. v MDSN je takmer vsetko (najma take zaciatocnicke veci)

Nahlásit jako SPAM
IP: 78.98.148.–
Danik
~ Anonymní uživatel
20 příspěvků
2. 6. 2008   #7
-
0
-

To petrl : kdybys to chtel do toho ListView, muzes to zkusit takhle

        private void AddFiles(string[] files) {

if (files.Length > 0) {
foreach (string file in files) {
Size THUMB_SIZE = this.imageList1.ImageSize;
string file_short = Path.GetFileName(file);
if (this.imageList1.Images[file_short] == null) {
using (Bitmap thumb = new Bitmap(THUMB_SIZE.Width, THUMB_SIZE.Height)) {
using (Image img = Image.FromFile(file)) {
double r1 = thumb.Width / (double)img.Width;
double r2 = thumb.Height / (double)img.Height;
r1 = (r1 < r2) ? r1 : r2;
int width = (int)(img.Width * r1);
int height = (int)(img.Height * r1);
width = (width < (THUMB_SIZE.Width - 1)) ? width : (THUMB_SIZE.Width - 2);
height = (height < (THUMB_SIZE.Height - 1)) ? height : (THUMB_SIZE.Height - 2);
using (Graphics g = Graphics.FromImage(thumb)) {
g.DrawImage(img, (thumb.Width - width) / 2, (thumb.Height - height) / 2, width, height);
using (Pen pen = new Pen(Color.LightGray)) {
g.DrawRectangle(pen, 1, 1, thumb.Width - 2, thumb.Height - 2);
}
}
}
ListViewItem item = new ListViewItem(file_short);
item.ImageKey = item.Text;
item.Tag = file;
this.imageList1.Images.Add(item.Text, thumb);
this.listView1.Items.Add(item);
}
}
}
}
}


A pak uz jen volat AddFiles(openFileDialog1.FileNames);

Predpoklada to existenci controlu imageList1(s nastavenym ImageSize na velikost pozadovanych nahledu) a listView1(s nastavenym view na LargeIcons a LargeImageList na imageList1). Neni to genialni ale tvuj ucel to plni. Chybi osetrit jeste spousta veci a taky bych to radsi zabalil do vlastni komponenty podedene od ListView nicmene pro inspiraci to asi takhle staci..

Nahlásit jako SPAM
IP: 194.213.32.–
mnn
~ Anonymní uživatel
118 příspěvků
2. 6. 2008   #8
-
0
-

vedel som, ze sa to da s ImageListami ale nenapadlo ma, ze to mozu byt aj nahlady ako 300x300 a pod :) viem aj o Graphics (niekedy ma stvalo ze to preblikovalo a robilo ine chobotiny :)) ale sklbit do kopy by ma to nenapadlo :) pekne

Nahlásit jako SPAM
IP: 78.98.148.–
petrl0
Návštěvník
2. 6. 2008   #9
-
0
-

To Danik : Díky moc, funguje to teď jsi to akorát upravím :-)

Nahlásit jako SPAM
IP: 82.150.166.–
Na fóru mě naleznete pod novým nickem => plasmo
Danik
~ Anonymní uživatel
20 příspěvků
3. 6. 2008   #10
-
0
-

To mnn : on by se dal ten imagelist myslim vyhodit uplne. Slo by nastavit OwnerDraw na true a napsat kod do DrawItem. Ovsem stejne bych si nekde musel drzet Bitmapy s nahledama..

Nahlásit jako SPAM
IP: 194.213.32.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 87 hostů

Podobná vlákna

Načtení obrázku — založil Fonde

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý