PDA

View Full Version : سوال: عوض کردن تصویر پس زمینه برنامه



مجتبی کجوری
یک شنبه 08 خرداد 1390, 07:42 صبح
سلام دوستان
من قبلا این سوال را مطرح کردم ولی هنوز به جوب نرسیدم من این کد را برای تغییر پس زمینه برنامه نوشتم


openfiledialog op=new openfiledialog();
if(op.showdialog==dialogresoult.ok)
system.io.writealltext("image",op.filename);
this.backgroundimage=image.fromfile(op.filename);
و توی لود فرم اینو نوشتم


if(system.io.file.exists("image"))
this.backgroundimage=system.io.file.readalltext("image");
ولی ظاهرا یه جای کار ایراد داره چون برنامه می خواد این فایل image.text در مسیر فایل اجرایی برنامه و در فولدر Debug باشه ممنون میشم اگه کمک کنید لطفا فقط نگاه نکنید اگه میدونید یه چیزی هم بگید خیلی ممنون میشم:لبخندساده:

zare69
یک شنبه 08 خرداد 1390, 08:18 صبح
سلام
فکر کنم این کد به دردت بخوره.
if (OpenFile.ShowDialog() == DialogResult.OK)
{

picPath = OpenFile.FileName;
if (File.Exists(picPath )
{
this.BackgroundImage = Image.FromFile( picPath );
}
}
موفق باشی

مجتبی کجوری
یک شنبه 08 خرداد 1390, 08:41 صبح
دوست عزیز این کدی که شما نوشتید را من امتحان کردم ولی جواب نمیده اصلا میدونید چیه توی لود فرم مسیر عکس رو نمیتونه پیدا کنه یعنی اگه عکس تو یه درایو دیگه باشه برنامه فقط مسیر فایل اجرایی خودش رو می گرده مشکل من اینه

haghft
یک شنبه 08 خرداد 1390, 09:33 صبح
برای من چندبار یه چیز عجیب رخ داده که هنوز دلیلشو نفهمیدم ولی شما هم امتحان کن شاید مشکلت حل بشه:
if (File.Exists(picPath )==false)

مجتبی کجوری
یک شنبه 08 خرداد 1390, 09:52 صبح
دوست عزیز ببینید وقتی این کد رو می نویسی system.IO.file.writealltext یک فایل متنی در همون فولدری که عکس وجود داره ایجاد میشه حالا برنامه باید دنبال این فایل متنی بگرده با این کدی که شما نوشتین اونو پیدا نمیکنه چون فقط تو فولدر Debug دنبالش می گرده !!!

zare69
یک شنبه 08 خرداد 1390, 10:11 صبح
دوست عزیز این کدی که شما نوشتید را من امتحان کردم ولی جواب نمیده اصلا میدونید چیه توی لود فرم مسیر عکس رو نمیتونه پیدا کنه یعنی اگه عکس تو یه درایو دیگه باشه برنامه فقط مسیر فایل اجرایی خودش رو می گرده مشکل من اینه

نه دوست عزیز اشتباه می کنی شما هر آدرسی بهش بدی میره اونجا بررسی میکنه اگه تصویر باشه اون را نمایش میده اگر بخوای میتونی تصویرت را بذاری کنار فایل اجرای برنامه و آدرس اونجا را به برنامه ات بدی.
موفق باشی

مجتبی کجوری
یک شنبه 08 خرداد 1390, 10:36 صبح
دوست عزیز من امتحانش کردم و با خطایی که می داد اینطور برداشت کردم که برنامه فقط مسیر فایل اجرایی رو می گرده ولی اگر اینطور نیست دلیلی نداره که عکس رو نشون نده این چیزی هم که گفتید موقتا جواب میده چون عکسی رو که انتخاب می کنید تو همون پوشه عکس این فایل متنی رو درست می کنه و نمیشه که برای هر بار عوض کردن عکس فایلش رو گذاشت کنار فایل اجرایی برنامه

zare69
یک شنبه 08 خرداد 1390, 12:24 عصر
اولا منظورتون از فایل متنی را نمی فهمم چه فایل متنی درست میشه ؟با چه دستوری؟
دوما نیاز نیست خودت عکس را کنار فایل اجرای بذاری با کدنویسی این کار را انجام بده.
سوما کدت با خطای که میگره قرار بده تا ببینیم مشکل از چیست؟

haghft
یک شنبه 08 خرداد 1390, 12:29 عصر
کاری که من گفتم کردی؟الکی حرف نمیزنما من تا حالا به این جور چیزا زیاد برخوردم.امتحان کن ببین درست میشه.در ضمن ارور رو بگو.

مجتبی کجوری
دوشنبه 09 خرداد 1390, 07:31 صبح
دوستان لطفا کمک کنید خسته شدم حداقل بگید چطوری می تونیم یک فایل رو از یک دایرکتوری به یه دایرکتوری دیگه کپی کنیم؟

Felony
دوشنبه 09 خرداد 1390, 08:08 صبح
دوستان لطفا کمک کنید خسته شدم حداقل بگید چطوری می تونیم یک فایل رو از یک دایرکتوری به یه دایرکتوری دیگه کپی کنیم؟

System.IO.File.Copy("Source", "Dest");

zare69
دوشنبه 09 خرداد 1390, 08:50 صبح
کپی کامل یک دایرکتوری و تمامی زیرشاخه های آن بصورت بازگشتی
using System.IO;

void CopyDirectory(DirectoryInfo source, DirectoryInfo destination)

{

if (!destination.Exists)

destination.Create();

// Copy all files.

FileInfo[] files = source.GetFiles();

foreach (FileInfo file in files)

file.CopyTo(Path.Combine(destination.FullName, file.Name));



// Process subdirectories.

DirectoryInfo[] dirs = source.GetDirectories();

foreach (DirectoryInfo dir in dirs)

{

// Get destination directory.

string destinationDir = Path.Combine(destination.FullName,dir.Name);

// Call CopyDirectory() recursively.

CopyDirectory(dir, new DirectoryInfo(destinationDir));

}

}

کپی کردن فایلهای درون یک دایرکتوری (فقط فایلها)



فایلها را در مسیرC:\CopiedFolder کپی میکند :



FolderBrowserDialog fbd = new FolderBrowserDialog();

fbd.Description = "Find Folder to Copy.";

if (fbd.ShowDialog() == DialogResult.OK)

{

string[] files = Directory.GetFiles(fbd.SelectedPath);

Directory.CreateDirectory(@"C:\CopiedFolder");

for (int i = 0; i < files.Length; i++)

{

string tmpFileExt = Path.GetExtension(files[i]);

string tmpFileName = Path.GetFileNameWithoutExtension(files[i]);

File.Copy(files[i], @"C:\CopiedFolder\" + tmpFileName + tmpFileExt, true);

}

}

javad_r_85
دوشنبه 09 خرداد 1390, 11:08 صبح
سلام دوستان
من قبلا این سوال را مطرح کردم ولی هنوز به جوب نرسیدم من این کد را برای تغییر پس زمینه برنامه نوشتم


openfiledialog op=new openfiledialog();
if(op.showdialog==dialogresoult.ok)
system.io.writealltext("image",op.filename);
this.backgroundimage=image.fromfile(op.filename);
و توی لود فرم اینو نوشتم


if(system.io.file.exists("image"))
this.backgroundimage=system.io.file.readalltext("image");
ولی ظاهرا یه جای کار ایراد داره چون برنامه می خواد این فایل image.text در مسیر فایل اجرایی برنامه و در فولدر Debug باشه ممنون میشم اگه کمک کنید لطفا فقط نگاه نکنید اگه میدونید یه چیزی هم بگید خیلی ممنون میشم:لبخندساده:





دوست عزیز مشکل شما اینه که با عکس مثل یک فایل متنی برخورد می کنی و می خوای اونا توی یه فایل بنویسی در صورتی که باید به آرایه ای از بایت های تبدیل کنید مانند کد زیر البته یک نمونه هست




byte[] arrImage = System.Text.Encoding.ASCII.GetBytes("�က䙊䙉Āā砀砀");



Image imageIn = picImage.Image;
System.IO.MemoryStream ms = new System.IO.MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
arrImage = ms.ToArray();



ولی شما بهتره که اونا در مسیر نصب کپی کنی اینجوری راحت تری برای نمایش اون هم یک پیکچر باکس روی فرم بنداز و Dok=Fill قرار بده با استفاده از کد زیر اونا نمایش بده



picImage.ImageLocation = Application.StartupPath + "\\image.png";

haghft
دوشنبه 09 خرداد 1390, 14:59 عصر
کپی کامل یک دایرکتوری و تمامی زیرشاخه های آن بصورت بازگشتی
این روشی که فرمودید معایبی از جمله پایین افتادن سرعت داره و استاندارد نیست.از این روش استفاده کنید خیلی بهتره و استاندارده:
Microsoft.VisualBasic.FileIO.FileSystem.CopyDirect ory("Source","Dest");

exlord
دوشنبه 09 خرداد 1390, 18:49 عصر
سلام دوستان
من قبلا این سوال را مطرح کردم ولی هنوز به جوب نرسیدم من این کد را برای تغییر پس زمینه برنامه نوشتم


openfiledialog op=new openfiledialog();
if(op.showdialog==dialogresoult.ok)
system.io.writealltext("image",op.filename);
this.backgroundimage=image.fromfile(op.filename);
و توی لود فرم اینو نوشتم


if(system.io.file.exists("image"))
this.backgroundimage=system.io.file.readalltext("image");
ولی ظاهرا یه جای کار ایراد داره چون برنامه می خواد این فایل image.text در مسیر فایل اجرایی برنامه و در فولدر Debug باشه ممنون میشم اگه کمک کنید لطفا فقط نگاه نکنید اگه میدونید یه چیزی هم بگید خیلی ممنون میشم:لبخندساده:




نمیدونم این کدهاتونو از کجا آوردین یا اصلا خودتون تست کردین یا نه ؟؟ ایناکه همش اشتباهه ...
بعد از 6 تا اررور سینتکسی ( نام اشتباه کلاسها ) :
اولا :
system.io.writealltext("image",op.filename);
WriteAllText توی System.IO.File نه System.IO
دوما : شما دارین اسم فایل رو مینویسین توی این فایل نه محتواشو .... محتوای فایل عکس رو اینجوری نمینویسن ...
کافیه که فایل عکس رو فقط کپی کنین ....
File.Copy(op.FileName, Application.StartupPath + "\\image");
سوما :
File.ReadAllText(...); یه string برمیگردونه که نمیشه به image کست کرد ...
توی لود :
if (File.Exists(Application.StartupPath + "\\image"))
this.BackgroundImage = Image.FromFile(Application.StartupPath + "\\image");

مجتبی کجوری
سه شنبه 10 خرداد 1390, 09:42 صبح
با سلام خدمتهمه دوستانی که جواب دادند تقریبا فهمیدم که چیکار باید بکنم اما خدمت این دوست آخری که تاپیک زدند باید عرض کنم که اگه این فایل رو در مسیر فایل اجرایی برنامه کپی کنی برای بار اول جواب میده و ربطی به نوع رشته و image نداره بلکه مسیر فایل عکس رو از توی فایل notpad می خونه اما با این حال از همتون ممنونم حالا می رم امتحان کنم ببینم چی میشه