من مقاله رو خوندم ...
صفحه من به این شکله که 6 انیمیشن در اون قرار داره که با لود صفحه اونها نمایش داده می شن البته توی picturebox گذاشتمشون و با کدنویسی اونها رو لود نمی کنم.
و یک تایمر دارم ... که شرط هایی رو چک می کنم اگه عدد تایمر شد 10 picturbox1 مشخص بشه مثلا boreder بخوره ...
اگه تایمر رسید به 20 انیمیشن دوم و ... به همین ترتیب
حالا این کدها نمی دونم به چه دلیل سرعت تایمر رو می گیره یعنی همونطور که گفتم تایمر یا جا می مونه یا سریع تر از حالت عادی پیش می ره و چون می خوام طبق تایمر روی برنامه صوت بذارم نمی شه از این مورد چشم پوشی کرد
حالا این کدهای شرطی داخل تایمر رو توی backgroundworker گذاشتم و در رویداد runcomplete نوشتم یه پیغام بده ... اما تا برنامه بالا می آد پیغامو می ده...
کدشو می ذارم اگه ممکنه بگین کجا باید استفاده کنم این backgroundworker رو.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Media;
using System.Collections;
using System.Threading;
namespace childfriend
{
public partial class jungle : Form
{
private int sec = 0, ext=0;
private Point loc1, loc2, loc3, loc4, loc5, loc6;
Cat mycat = new Cat();
public jungle()
{
InitializeComponent();
}
//don't let close form with ALT+F4
protected override System.Boolean ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
if ((msg.Msg == 0x104) && (((int)msg.LParam) == 0x203e0001))
return true;
return false;
}
private void jungle_Load(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
mycat.a = 903;
mycat.b = 110;
timer1.Enabled = true;
pictureBox7.Visible = false;
// pictureBox1.Image = Image.FromFile(Application.StartupPath + @"\pic\animalteach\anim (9).png");//kharchang
// pictureBox2.Image = Image.FromFile(Application.StartupPath + @"\pic\animalteach\anim (11).png");//panda
// pictureBox3.Image = Image.FromFile(Application.StartupPath + @"\pic\animalteach\anim (2).png");//sag
// pictureBox4.Image = Image.FromFile(Application.StartupPath + @"\pic\animalteach\anim (4).png");//mahi
// pictureBox5.Image = Image.FromFile(Application.StartupPath + @"\pic\animalteach\anim (27).png");//gorbe
// pictureBox6.Image = Image.FromFile(Application.StartupPath + @"\pic\animalteach\anim (1).png");//gav
loc1.X = 591;
loc1.Y = 577;
pictureBox1.Location = loc1;
loc2.X = 439;
loc2.Y = 260;
pictureBox2.Location = loc2;
loc3.X = 192;
loc3.Y = 557;
pictureBox3.Location = loc3;
loc4.X = 774;
loc4.Y = 623;
pictureBox4.Location = loc4;
loc5.X = 793;
loc5.Y = 324;
pictureBox5.Location = loc5;
loc6.X = 62;
loc6.Y = 314;
pictureBox6.Location = loc6;
}
private void timer1_Tick(object sender, EventArgs e)
{
sec += 1;
timer1.Interval = 1000;
label1.Text = sec.ToString();
}
private void transparentpic1_Click(object sender, EventArgs e)
{
transparentpic1.Visible = false;
this.Enabled = false;
ext = 0;
timer2.Enabled = true;
mycat.CatExit();
sec = 0;
timer1.Enabled = false;
}
private void hotspot1_Click(object sender, EventArgs e)
{
}
private void hotspot2_Click(object sender, EventArgs e)
{
}
private void backgroundWorker1_DoWork_1(object sender, DoWorkEventArgs e)
{
if (sec > 10 && sec < 20)//kharchang
{
// pictureBox1.Image = Image.FromFile(Application.StartupPath + @"\pic\animalbig\16.gif");
// loc1.X = 575;
// loc1.Y = 567;
// pictureBox1.Location = loc1;
// pictureBox1.BorderStyle = BorderStyle.FixedSingle;
pictureBox7.Visible = true;
loc1.X = 610;
loc1.Y = 639;
pictureBox7.Location = loc1;
string mypath = Application.StartupPath + @"\music\no.wav";
SoundPlayer simpleSound = new SoundPlayer(mypath);
simpleSound.Play();
}
if (sec > 20 && sec < 30)//panda
{
// pictureBox2.Image = Image.FromFile(Application.StartupPath + @"\pic\animalbig\20.gif");
// loc2.X = 453;
// loc2.Y = 225;
// pictureBox2.Location = loc2;
// pictureBox2.BorderStyle = BorderStyle.FixedSingle;
pictureBox7.Visible = true;
loc1.X = 462;
loc1.Y = 396;
pictureBox7.Location = loc1;
}
if (sec > 30 && sec < 40)//sag
{
// pictureBox3.Image = Image.FromFile(Application.StartupPath + @"\pic\animalbig\6.gif");
// loc3.X = 165;
// loc3.Y = 526;
// pictureBox3.Location = loc3;
// pictureBox3.BorderStyle = BorderStyle.FixedSingle;
pictureBox7.Visible = true;
loc1.X = 200;
loc1.Y = 659;
pictureBox7.Location = loc1;
}
if (sec > 40 && sec < 50)//mahi
{
// pictureBox4.Image = Image.FromFile(Application.StartupPath + @"\pic\animalbig\10.gif");
// loc4.X = 774;
// loc4.Y = 623;
// pictureBox4.Location = loc4;
// pictureBox4.BorderStyle = BorderStyle.FixedSingle;
pictureBox7.Visible = true;
loc1.X = 891;
loc1.Y = 684;
pictureBox7.Location = loc1;
}
if (sec > 50 && sec < 60)//gorbe
{
// pictureBox5.Image = Image.FromFile(Application.StartupPath + @"\pic\animalbig\3.gif");
// loc5.X = 774;
// loc5.Y = 291;
// pictureBox5.Location = loc5;
// pictureBox5.BorderStyle = BorderStyle.FixedSingle;
pictureBox7.Visible = true;
loc1.X = 810;
loc1.Y = 421;
pictureBox7.Location = loc1;
}
if (sec > 60 && sec < 70)//gav
{
// pictureBox6.Image = Image.FromFile(Application.StartupPath + @"\pic\animalbig\5.gif");
// loc6.X = 48;
// loc6.Y = 272;
// pictureBox6.Location = loc6;
// pictureBox6.BorderStyle = BorderStyle.FixedSingle;
pictureBox7.Visible = true;
loc1.X = 90;
loc1.Y = 447;
pictureBox7.Location = loc1;
}
if (sec == 70)
{
sec = 0;
timer1.Enabled = false;
this.Hide();
animalquery animq = new animalquery();
animq.Tag = this;
animq.ShowDialog();
}
}
private void timer2_Tick(object sender, EventArgs e)
{
ext += 1;
timer2.Interval = 1000;
backgroundWorker1.RunWorkerAsync();
if (ext > 2)
{
mycat.MyCat.Hide();
timer2.Enabled = false;
this.Enabled = true;
transparentpic1.Visible = true;
this.Close();
foreach (Form teaching in Application.OpenForms)
{
if (teaching is teach)
Application.OpenForms["teach"].Show();
}
}
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
MessageBox.Show("complete");
}
}
}
این کد کل صفحه هست... ممنون می شم اشکالشو بگین
در ضمن این picturebox7 یه انیمیشن هست که یک فلشه که به عکسی که اون لحظه انتخاب شده اشاره می کنه . به جای همون border که گفتم استفاده می شه... یعنی مشخص می کنه که الان کدوم عکس می خواد معرفی بشه و صوت روی اون پخش بشه... برای همین با تغییر عدد تایمر ، محل این انیمیشن تغییر می کنه.