PDA

View Full Version : سوال: نمایش چند عکس در کنار هم "در یک PictureBox"



MehdiElexal
شنبه 28 شهریور 1394, 21:06 عصر
با سلام خدمت دوستان عزیز
چطور میشه چند عکس کوچیک رو در کنار هم داخل یک پیکچر باکس بصورت پشت سر هم نشون بدم ؟
آدرس عکس هارو بدیم و داخل یک حلقه یا هرچیز دیگه عکس ها به ترتیب ادد شن داخل پیکچر باکس مورد نظر
بطور مثال داخل پیکچر باکس عکس ها پشت هم به این صورت بیوفتن => :لبخندساده::لبخندساده::لبخن ساده::لبخندساده::لبخندساده: :لبخندساده::لبخندساده::لبخن ساده:
امیدوارم منظور رو رسونده باشم
با تشکر

Mahmoud Zaad
شنبه 28 شهریور 1394, 21:25 عصر
سلام
اگه میخوای یه چیزی شبیه محیط ویندوز داشته باشی که آیکن فایل ها کنار هم هستن باید از Listview استفاده کنی. ولی اگه حتماً میخوای از picturebox استفاده کنی باید با گرافیک کار کنی یعنی یه شی Graphics از picturebox بسازی و با استفاده از حلقه و متد DrawImage عکس ها رو کنار هم اضافه کنی البته باید یه سری محاسبات هم انجام بدی مثلاً اگه از چپ به راست بخوای بچینی location اولی میشه (0,0) . عکس بعدی از انتهای عکس فعلی شروع میشه یعنی مکان ایکس فعلی + width عکس فعلی و ...

MehdiElexal
یک شنبه 29 شهریور 1394, 11:46 صبح
خودم ردیفش کردم
دوستان میتونید از این سورس برای کنار هم چیدن عکس هاتون استفاده کنید
using System;using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;




using System.Collections.Generic;




namespace TestBMSVahed
{
public partial class Form1 : Form
{

public Form1()
{
InitializeComponent();

}
private void button1_Click(object sender, EventArgs e)
{


DirectoryInfo directory = new DirectoryInfo(@"C:\Users\Public\pic");
if (directory != null)
{
FileInfo[] files = directory.GetFiles();
CombineImages(files);
}




//pictureBox1.Image = Image.FromFile(Application.StartupPath + "\\1.jpg");
}




private void CombineImages(FileInfo[] files)
{
//try
//{
//change the location to store the final image.
string finalImage = @"C:\Users\Public\pic\Create.png";
List<int> imageHeights = new List<int>();
int nIndex = 0;
int width = 0;
foreach (FileInfo file in files)
{
Image img = Image.FromFile(file.FullName);
imageHeights.Add(img.Height);
width += img.Width;
img.Dispose();
}
imageHeights.Sort();
int height = imageHeights[imageHeights.Count - 1];
Bitmap img3 = new Bitmap(width, height);
Graphics g = Graphics.FromImage(img3);
g.Clear(SystemColors.AppWorkspace);
foreach (FileInfo file in files)
{
Image img = Image.FromFile(file.FullName);
if (nIndex == 0)
{
g.DrawImage(img, new Point(0, 0));
nIndex++;
width = img.Width;
}
else
{
g.DrawImage(img, new Point(width, 0));
width += img.Width;
}
img.Dispose();
}
g.Dispose();
img3.Save(finalImage, System.Drawing.Imaging.ImageFormat.Jpeg);
img3.Dispose();
pictureBox1.Image = Image.FromFile(finalImage);
//}
//catch (Exception e)
//{
// MessageBox.Show(e.ToString());
//}
}

}
}