PDA

View Full Version : سوال: نمايش عكس قبل از شروع برنامه



shytonak
چهارشنبه 24 مهر 1387, 19:30 عصر
سلام دوستان من ميخواستم قبل از اين كه برنامه اصلي اجرا بشه يه عكس رو براي يه مدت خاص روي دسكتاپ نمايش بدم ميشه يه راهنمايي كنيد.با تشكر

kh1387
چهارشنبه 24 مهر 1387, 19:36 عصر
دوست خوبم سلام
یکی از راه ها اینه که از رویداد paint فرمتون استفاده کرده و فرمتون رو به شکل و تصویر دلخواه در بیارید.
اگه خواستید یه برنامه براتون بذارم.
موفق باشید

محمدامین شریفی
چهارشنبه 24 مهر 1387, 19:55 عصر
نمونه از این کار،که خودم ازش استفاده کردم

for (int b = 100; b >= 0; b--)
{
this.Opacity= b;
System.Threading.Thread.Sleep(10);
if (b == 0) Application.Exit();
}

Mahdi.Kiani
پنج شنبه 25 مهر 1387, 01:18 صبح
سلام
اگر از WinApp استفاده می کنید: (یک نمونه)


http://www.codersource.net/images/raul_splash.gif (http://www.codersource.net/csharp_splash_screen.aspx)


*********
اگر از WPF استفاده میکنید، روشی زیبا و البته بسیار ساده وجود داره.
1)عکس دلحواه خود را به solution اضافه کنید.
2)بر روی آن راست کلیک کنید و گزینه properties را بزنید.
3) حاصیت BuildAction را بر روی SplashScreen تنظیم کنید.
4)برنامه را اجرا کنید!!!
**************
نکته : در فضای نام System.Window کلاسی به نام SplashScreen وجود دارد که همان کار را برای شما انجام میدهد. با این تفاوت که می تونید با استفاده از ابزار های دیگه مانند یک Dispatcher Timer ، کنترل بیشتری بر روی اون داشته باشید. ( مثلا مدت زمان نمایش)
**************
نکته2) برای خارج کردن عکس از حالت splash کافی است مقدار BuildAction را به None اغییر دهید.
پ و : این موضوع در Net 3.0 sp1 یا 3.5 sp1 به بعد ساپورت میشه. ( اگر VS 2008 sp1 دارید می تونید ازش استفاده کنید)

SMRAH1
پنج شنبه 25 مهر 1387, 07:00 صبح
اینو (http://barnamenevis.org/forum/showpost.php?p=605332&postcount=150)هم می تونید استفاده کنید.

shytonak
یک شنبه 27 بهمن 1387, 20:08 عصر
دوستان میشه یه نمونه برنامه برام بذارید یا یکم بیشتر توضیح بدید ممنون میشم

shervin_agh67
یک شنبه 27 بهمن 1387, 23:52 عصر
اگر مورد استفاده Splash زمانیه که برنامه لودش خیلی طول میشکه و از WinApp هم استقاده می کنید این روشها کارساز نیست چون باعث کندی حرکت برنامه میشه و خود اون Splash هم به کندی بالا میاد . البته یک مدل هم با ریسمان نوشته شده بود که برنامه رو کند نمی کرد ولی زمان لودش ثابت بود و به میزان سرعت اجرای برنامه اصلی ارتباطی نداشت . اگه از تایمر هم استفاده کنیم درسته که توی برنامه های کوچیک خوب جواب می ده ولی در برنامه های بزرگ یک حلقه ساده هم سرعت لود برنامه رو کاهش میده . برای این کار من از یک روشی استفاده می کنم که البته غلط هم هست ولی چیز دیگه ای به ذهنم نرسید :
صفحه آغازین برنامه رو Splash میگذاری و صفحه اصلی برنامه رو از داخل این صفحه صدا می زنی و سپس هندل صفحه Splash رو به صفحه اصلی برنامه می فرستی و در رویداد لود صفحه اصلی هندل صفحه splash رو می بندی البته اگه از چند ریسمانی استفاده می کنی که باید delegate به کار ببری .

spalsh Form :


Form1 frm=new Form1(this);
this.hide();
frm.show();Main Form :


spalsh splash_handle;
Form1(spalsh sp)
{
splash_handle=sp;
}
void Form1_load(...)
{
splash_handle.close();
}
البته با ریسمان هم میشه نوشتش که هر دو صفحه splash و صفحه اصلی به صورت موازی لود بشن و مسلما زمان لود برنامه هم کمتر میشه ولی برای بستن صفحه splash باید از delegate استفاده کنید .