mh3242
چهارشنبه 19 شهریور 1393, 12:11 عصر
سلام خدمت دوستان
من یه برنامه نوشتم که یه سری عکس که توی picturebox ها هستن رو اول ذخیره میکنه رو هارد دیسک تو مسیر خود برنامه و بعدشم چاپشون میکنه. خود برنامه بدون هیچ مشکلی داره کار میکنه. ولی بعد از یه مدت متوجه شدم درایو ویندوز خیلی پر شده به حدی که چند ده MB جای خالی داره.
اینم بگم که از ویندوز 7 استفاده میشه.
شک کردم که لنگ کار از برنامم باشه. گشتم تو درایو ویندوز و دیدم که پوشه winsxs بیشتر از 6GB حجم داره. و اصلا هم نمیشه چیزی ازش حذف کرد. تو نت هم سرچ زدم. راه حل هایی که وجود داشت استفاده از disk cleanup بود که فضای خیلی کمی رو آزاد میکرد.
اما یه جایی خوندم که هر فایلی توی کل کامپیوتر ایجاد میشه یه لینکی به این پوشه داره. برگشتم و برنامه رو اجرا کردم و چندین بار عکسها رو پرینت گرفتم (همزمان با پرینت گرفتن برنامه به صورت خودکار عکس ها رو ذخیره میکنه). چیزی که دیدم این بود که بعد از هر بار چاپ کردن بیشتر از 100MB تغییر حجم تو درایو ویندوز میدیدم!!! این در حالی هستش که کل حجمی که من با برنامم ذخیره میکردم کمتر از 5MB بود.
خب حالا کد های برنامه:
قسمت ذخیره عکس:
try
{
Directory.CreateDirectory(Environment.CurrentDirec tory + ... );
for (int c = 0; c < 13; C++)
{
if (File.Exists(Environment.CurrentDirectory + ... + (c + 1).ToString() + ".JPEG"))
File.Delete(Environment.CurrentDirectory + ... + (c + 1).ToString() + ".JPEG");
ImageArrayForSave[c].Save(Environment.CurrentDirectory + ... + (c + 1).ToString() + ".JPEG", ImageFormat.Jpeg);
}
PrintDocument.PrinterSettings = PrintDialog.PrinterSettings;
PrintDocument.Print();
this.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
PrintDocument.Dispose();
}
و قسمت چاپ:
private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e)
{
Rectangle Rec;
Rec = new Rectangle(0, 0, (int)Support.ToPixelsX(210, ScaleMode.Millimeters), (int)Support.ToPixelsX(297, ScaleMode.Millimeters));
e.Graphics.DrawImage(ImageArrayForPrint[Counter], Rec);
Counter++;
if (Counter < NumberOfPages)
{
e.HasMorePages = true;
}
}
حالا از اساتید محترم درخواست دارم اگه میتونن راه حلی برای جلوگیری از این افزایش حجم ارائه بدن.
با تشکر
من یه برنامه نوشتم که یه سری عکس که توی picturebox ها هستن رو اول ذخیره میکنه رو هارد دیسک تو مسیر خود برنامه و بعدشم چاپشون میکنه. خود برنامه بدون هیچ مشکلی داره کار میکنه. ولی بعد از یه مدت متوجه شدم درایو ویندوز خیلی پر شده به حدی که چند ده MB جای خالی داره.
اینم بگم که از ویندوز 7 استفاده میشه.
شک کردم که لنگ کار از برنامم باشه. گشتم تو درایو ویندوز و دیدم که پوشه winsxs بیشتر از 6GB حجم داره. و اصلا هم نمیشه چیزی ازش حذف کرد. تو نت هم سرچ زدم. راه حل هایی که وجود داشت استفاده از disk cleanup بود که فضای خیلی کمی رو آزاد میکرد.
اما یه جایی خوندم که هر فایلی توی کل کامپیوتر ایجاد میشه یه لینکی به این پوشه داره. برگشتم و برنامه رو اجرا کردم و چندین بار عکسها رو پرینت گرفتم (همزمان با پرینت گرفتن برنامه به صورت خودکار عکس ها رو ذخیره میکنه). چیزی که دیدم این بود که بعد از هر بار چاپ کردن بیشتر از 100MB تغییر حجم تو درایو ویندوز میدیدم!!! این در حالی هستش که کل حجمی که من با برنامم ذخیره میکردم کمتر از 5MB بود.
خب حالا کد های برنامه:
قسمت ذخیره عکس:
try
{
Directory.CreateDirectory(Environment.CurrentDirec tory + ... );
for (int c = 0; c < 13; C++)
{
if (File.Exists(Environment.CurrentDirectory + ... + (c + 1).ToString() + ".JPEG"))
File.Delete(Environment.CurrentDirectory + ... + (c + 1).ToString() + ".JPEG");
ImageArrayForSave[c].Save(Environment.CurrentDirectory + ... + (c + 1).ToString() + ".JPEG", ImageFormat.Jpeg);
}
PrintDocument.PrinterSettings = PrintDialog.PrinterSettings;
PrintDocument.Print();
this.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
PrintDocument.Dispose();
}
و قسمت چاپ:
private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e)
{
Rectangle Rec;
Rec = new Rectangle(0, 0, (int)Support.ToPixelsX(210, ScaleMode.Millimeters), (int)Support.ToPixelsX(297, ScaleMode.Millimeters));
e.Graphics.DrawImage(ImageArrayForPrint[Counter], Rec);
Counter++;
if (Counter < NumberOfPages)
{
e.HasMorePages = true;
}
}
حالا از اساتید محترم درخواست دارم اگه میتونن راه حلی برای جلوگیری از این افزایش حجم ارائه بدن.
با تشکر