PDA

View Full Version : آموزش: باز شدن فرم با حالتهاي انيميشني!!!



mahboube
پنج شنبه 15 مهر 1389, 11:22 صبح
سلام
من دنبال نوشتن برنامه اي هستم كه بتونم فرم رو باانيميشن باز كنم.(البته نه انيميشن هاي ساده!!!!) مثل ورق زدن كتاب.
هر كسي هر پيشنهادي يا نمونه برنامه خوبي داره اگه اينجا بزاره ok‌ميشه.
خودم هم چندتا نمونه دارم كه ميزارم.
اينا چندتا لينك نمونه خيلي خوشگلن:(نگاه كنيد حالشو ببريد)
http://www.codeproject.com/KB/miscctrl/animators.aspx
و
http://www.codeproject.com/KB/dialog/walkingrabbit.aspx

وعشق من اين
http://www.codeproject.com/KB/GDI-plus/LovelyGoldFishDeskPet.aspx

حالشو ببرين با اينا تا بعد....

arash mehrani
پنج شنبه 15 مهر 1389, 12:34 عصر
دوست عزيز يك نگاهي به اين نرم افزار بنداز FlippingBook PDF Publisher
براي برنامه نويسي نيست ولي ميشه باهاش كتاب هاي كه قابليت ورق زدن داره رو ساخت تازه ميتوني به صورت html يا .... ازش خروجي بگيري:قلب:
توي گوگل سرچ كن لينك دانلودش هم هست...

MEhdi Sobhani
پنج شنبه 15 مهر 1389, 13:32 عصر
سلام
این نمونه رو خودم الان نوشتم که البته خیلی مقدماتیه ولی راحت میتونی ازش ایده بگیری و تکمیلش کنی و افکتهای دیگه شبیه این رو بسازی .
روش کارش هم اینه که یه بار از فرم عکس میگیره و بعد کنترلها رو مخفی میکنه و کارای لازم رو انجام میده . آخرش دوباره کنترلها رو ب میگردونه .



private void MyEffect1()
{
Image StartBg =this.BackgroundImage;
Bitmap MyBitmap = new Bitmap(this.Width,this.Height);
this.DrawToBitmap(MyBitmap, new Rectangle(0, 0, this.Width, this.Height));
Graphics MyGraphics = Graphics.FromImage(MyBitmap);
this.BackgroundImage = MyBitmap;
foreach (Control C in this.Controls)
{
C.Visible=false;
}
button1.Visible = false;
this.Refresh();
MyGraphics.DrawImage(MyBitmap, 0, 0);
int StartWidth = this.Width;
for (int i = 0; i <= StartWidth; i++)
{
this.Width = i;
this.Refresh();
}

foreach (Control C in this.Controls)
{
C.Visible = true;
}
this.BackgroundImage=StartBg ;
}



این تابع باید در formshow یا بعد از اون قرار داده بشه .

mahboube
پنج شنبه 15 مهر 1389, 13:48 عصر
اينام باحالن:
http://www.codeproject.com/KB/game/reversi.aspx
و
http://www.codeproject.com/KB/GDI-plus/Sparkle.aspx

mahboube
پنج شنبه 15 مهر 1389, 13:51 عصر
1]سلام
این نمونه رو خودم الان نوشتم که البته خیلی مقدماتیه ولی راحت میتونی ازش ایده بگیری و تکمیلش کنی و افکتهای دیگه شبیه این رو بسازی .
روش کارش هم اینه که یه بار از فرم عکس میگیره و بعد کنترلها رو مخفی میکنه و کارای لازم رو انجام میده . آخرش دوباره کنترلها رو ب میگردونه .

آفرين.دمت گرم.اتفاقا كاري كه خودم دارم مي كنم همينه.
براهمينه تمام توابع عكس گرفتن از فرم رو درآوردم.(تو برنامه نويس گذاشتم)
وقتي از فرم عكس بگيرين مي تونين هر شكلي خواستين بازش كنيد.
ممنون.لطفيدي.:قلب:

MaHyaR.DrAcOulA
پنج شنبه 15 مهر 1389, 16:08 عصر
دوست عزيز يك نگاهي به اين نرم افزار بنداز FlippingBook PDF Publisher
براي برنامه نويسي نيست ولي ميشه باهاش كتاب هاي كه قابليت ورق زدن داره رو ساخت تازه ميتوني به صورت html يا .... ازش خروجي بگيري:قلب:
توي گوگل سرچ كن لينك دانلودش هم هست...

ممنون بابت برنامه ات
دانلود کردمش ولی مشکل اینجاست که چجوری واسه برنامه های خودمون از این تکنیک استفاده کنیم؟

MEhdi Sobhani
جمعه 16 مهر 1389, 18:03 عصر
سلام
این هم یه افکت دیگه .
Copyright با نقل قول :چشمک:




public static void MyEffect1(Form FormName, int MiliSecondDuration = 300)
{
bool[] Visibles = new bool[FormName.Controls.Count];
int HeightDiff = FormName.Height - FormName.ClientSize.Height;
int WidthDiff = FormName.Width - FormName.ClientSize.Width;
Image StartBg = FormName.BackgroundImage;
Bitmap MyBitmap = new Bitmap(FormName.ClientSize.Width, FormName.ClientSize.Height);
Bitmap MyBitmap2 = new Bitmap(FormName.Width, FormName.Height);
FormName.DrawToBitmap(MyBitmap2, new Rectangle(0, 0, FormName.Width, FormName.Height));

Graphics MyGraphics = Graphics.FromImage(MyBitmap);
FormName.BackgroundImage = MyBitmap;
int i = 0;
foreach (Control C in FormName.Controls)
{
Visibles[i] = C.Visible;
i++;
C.Visible = false;
}
FormName.Refresh();
MyGraphics.DrawImage(MyBitmap2, -WidthDiff, -HeightDiff);
int StartWidth = FormName.Width;
int StartHeight = FormName.Height;
float HtWd = (float)FormName.Height / FormName.Width;
int StartLeft = FormName.Left;
int StartTop = FormName.Top;
DateTime StartTime = DateTime.Now;

FormName.Height = 2;
double Nesbat = 0;
FormName.Top = (int)(StartTop + (StartHeight - (Nesbat * StartHeight)) / 2);
while (Nesbat < 1)
{
Nesbat = (DateTime.Now.Subtract(StartTime).TotalMillisecond s) / MiliSecondDuration;
FormName.Left = (int)(StartLeft + (StartWidth - Nesbat * StartWidth) / 2);
FormName.Width = (int)(Nesbat * StartWidth);
FormName.Opacity = Nesbat;
FormName.Refresh();
Application.DoEvents();
}

StartTime = DateTime.Now;
Nesbat = 0;
while (Nesbat < 1)
{
Nesbat = (DateTime.Now.Subtract(StartTime).TotalMillisecond s) / MiliSecondDuration;
FormName.Top = (int)(StartTop + (StartHeight - (Nesbat * StartHeight)) / 2);
FormName.Height = (int)(Nesbat * StartHeight);
FormName.Refresh();
Application.DoEvents();
}
i = 0;
foreach (Control C in FormName.Controls)
{
C.Visible = Visibles[i];
i++;
}
FormName.Top = StartTop;
FormName.Height = StartHeight;
FormName.Left = StartLeft;
FormName.Width = StartWidth;
FormName.BackgroundImage = StartBg;
FormName.Refresh();
}

public static void MyEffect2(Form FormName, int MiliSecondDuration = 300)
{
int HeightDiff = FormName.Height - FormName.ClientSize.Height;
int WidthDiff = FormName.Width - FormName.ClientSize.Width;
Image StartBg = FormName.BackgroundImage;
Bitmap MyBitmap = new Bitmap(FormName.ClientSize.Width, FormName.ClientSize.Height);
Bitmap MyBitmap2 = new Bitmap(FormName.Width, FormName.Height);
FormName.DrawToBitmap(MyBitmap2, new Rectangle(0, 0, FormName.Width, FormName.Height));

Graphics MyGraphics = Graphics.FromImage(MyBitmap);
FormName.BackgroundImage = MyBitmap;
foreach (Control C in FormName.Controls)
{
C.Visible = false;
}
FormName.Refresh();
MyGraphics.DrawImage(MyBitmap2, -WidthDiff, -HeightDiff);
int StartWidth = FormName.Width;
int StartHeight = FormName.Height;
float HtWd = (float)FormName.Height / FormName.Width;
int StartLeft = FormName.Left;
int StartTop = FormName.Top;
DateTime StartTime = DateTime.Now;

double Nesbat = 1;
while (Nesbat > 0)
{
Nesbat = 1 - (DateTime.Now.Subtract(StartTime).TotalMillisecond s) / MiliSecondDuration;
FormName.Width = (int)(Nesbat * StartWidth);
FormName.Height = (int)(Nesbat * StartHeight);
FormName.Left = (int)(StartLeft + (StartWidth - Nesbat * StartWidth) / 2);
FormName.Top = (int)(StartTop + (StartHeight - (Nesbat * StartHeight)) / 2);
FormName.Opacity = Nesbat;
FormName.Refresh();
Application.DoEvents();
}

foreach (Control C in FormName.Controls)
{
C.Visible = true;
}
FormName.Top = StartTop;
FormName.Height = StartHeight;
FormName.Left = StartLeft;
FormName.Width = StartWidth;
FormName.BackgroundImage = StartBg;
}

این هم (http://barnamenevis.org/forum/attachment.php?attachmentid=57973&stc=1&d=1286550642) نمونه برای بستن و بازکردن فرم با افکت :

e.Rezaei
یک شنبه 09 آبان 1389, 19:32 عصر
سلام
اين برنامه هم فكر مي كنم جالب باشه ،ولي انيميشن هاي ساده اي داره
http://ehsanavr.com/?p=893