نمایش نتایج 1 تا 38 از 38

نام تاپیک: track bar

  1. #1

    track bar

    سلام من یه track bar دارم میخوام وقتی sound شروع شد به پخش شدن track bar هم همزمان باهاش شروع کنه به حرکت کردن چکار باید بکنم؟ codesh چیه ؟
    میخوام کاربر بتونه صدا رو کم و زیاد هم بکنه با button هایی که برای میزان بلندی صدا و میزان کاهش صدا گذاشتم برای این هم چه code باید بنویسم ؟
    اگر منو راهنمایی کنید ممنون میشم.

  2. #2
    هیچ کس نمی دونه من باید چیکار کنم؟

  3. #3
    چرا کسی به این جواب نمیده؟

  4. #4
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    میخوام کاربر بتونه صدا رو کم و زیاد هم بکنه با button هایی که برای میزان بلندی صدا و میزان کاهش صدا گذاشتم برای این هم چه code باید بنویسم ؟
    برای تغییر ولوم صدا، اگر از کنترل axWindowsMediaPlayer استفاده مکنید، از خاصیت axWindowsMediaPlayer1.settings.volume استفاده کنید و هر وقت که کاربر روی دکمه افزایش صدا کلیک کرد، یک واحد افزایش و اگر روی کاهش صدا کلیک کرد، یک واحد از این خاصیت کم کنید.

    یه track bar دارم میخوام وقتی sound شروع شد به پخش شدن track bar هم همزمان باهاش شروع کنه به حرکت کردن چکار باید بکنم؟
    بلد نبودم که زمان سپری شده از پخش آهنگ رو بدست بیارم، وگرنه جواب این سوال را هم میدادم.

  5. #5
    ای ول دمتون گرم
    ولی قسمت اول سؤالتون نه از axWindowsMediaPlayer استفاده نکردم از soundPlayer استفاده کردم
    برای سؤال دوم: بیزحمت میشه روش کار کنید That's important for me plzzzzz

  6. #6
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    تا جائی که متوجه شدم، کلاس SoundPlayer انعطاف نداره یا اینکه نمیدونم چطور باهاش میشه چنین کارهائی رو انجام داد.

    برای تغییر درجه صدا روی آهنگ، میتونید صدای ویندوز رو کم یا زیاد کنید، با مراجعه به لینک زیر:
    https://barnamenevis.org/showthread.php?t=73702

  7. #7
    باز هم ممنونم فعلا که نتونستم ببینمش پیغام داد فیلتر شده

  8. #8
    خوب حالا میشه بگید چطور از axWindowsMediaPlayer استفاده کنم که کارهای منو انجام و دیده هم نشه و ...؟

  9. #9
    خب بگید چه جوری از axWindowsMediaPlayer استفاده کنم دیگه خب ؟

  10. #10
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    باید این کنترل رو به Toolbox اضافه کنید، برای افزودن این کنترل به Toolbox، روی Toolbox کلیک راست کرده و گزینه Choose Items رو انتخاب کنید. صبر کنید تا پنجره ای نمایش داده بشه و از زبانه COM Components و از لیست گزینه Windows Media Player را انتخاب کرده و روی دکمه OK کلیک کنید. با اینکار این کنترل به Toolbox اضافه میشه.

    کنترل Windows Media Player رو به فرم اضافه کنید (تحت نام axWindowsMediaPlayer1 اضافه میشه)،
    اگر میخواید نمایش داده نشه، کارهای زیر رو انجام بدید:
    1. خاصیت uiMode رو به invisible تغییر دهید.
    2. خاصیت Size رو به 0 و 0 تغییر بدید.
    3. خاصیت Visible را روی false تنظیم کنید.

    برای مشخص کردن یک آهنگ برای آن، از کد زیر استفاده کنید که filename نام آهنگ است (mp3, midi, rmi, wav, wma و ...):

    axWindowsMediaPlayer1.currentMedia = axWindowsMediaPlayer1.newMedia(filename);


    و برای پخش آن از متد axWindowsMediaPlayer1.Ctlcontrols.play() استفاده کنید.

  11. #11
    مرسی مرسی مرسی
    آیا pause هم داره یا نه؟
    laud volume & Low volume هم داره دیگه ؟
    آخ آره یادم اومد گفتید داره :-)

  12. #12
    ببخشید ها برای بلندی صدا
    axWindowsMediaPlayer1.settings.volume + 1;
    نوشتم ولی error زیر رو داد :
    Error 1 Only assignment, call, increment, decrement, and new object expressions can be used as a
    حالا چکار کنم؟
    راستی اگه بخوام از خاصیت mute استفاده کنم
    بعدش برای از حالت mute درآمدن باید از چی استفاده کنم ؟


  13. #13
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    یک نمونه برنامه در قسمت نمونه برنامه ها گذاشتم، خواستید ببینید.
    https://barnamenevis.org/showthread.php?t=64210

  14. #14
    یک label هم دارم که میخوام مقدار زمان پخش صدا رو نشان بده ولی چه جوری ؟

  15. #15
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    از axWindowsMediaPlayer1.Ctlcontrols.currentPosition استفاده کنید. (بر حسب ثانیه است)

  16. #16
    ولی وقتی این کد را برایش نوشتم
    label1.Text =
    Convert.ToString(axWindowsMediaPlayer1.Ctlcontrols.curren tPosition);

    label فقط عدد صفر رو نشان میده

  17. #17
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    بله، من هم وقتی بار اول خواستم اینجوری ازش استفاده کنم، عدد صفر رو بهم نشون میداد.
    زمانی از این خاصیت استفاده کنید که موسیقی آماده پخش باشه.
    مثلا یک timer به فرم اضافه کنید و کد زیر رو درونش بنویسید، حتما نتیجه خواهید گرفت:

    private void timer1_Tick(object sender, EventArgs e)
    {
    label1.Text = axWindowsMediaPlayer1.Ctlcontrols.currentPositionS tring;
    }

    timer رو Enabled کنید. هر وقت هم که خواستید زمان پخش رو به رشته تبدیل کنید، بهتره بجای Ctlcontrols.currentPosition از Ctlcontrols.currentPositionString استفاده کنید تا لازم نباشه به رشته تبدیلش کنید.

  18. #18
    حالا هر کاری میکنم که نوشته یک label زمان کل صدا باشه نمیشه از
    label3.Text = axWindowsMediaPlayer1.currentMedia.durationString; استفاده کردم ولی فقط 0 را نشان میده توی timer نوشتمش ولی ارور داد
    و همچنین کاربر وقتی میخواد صدا رو جلو و عقب کنه باید وقتی track bar رو جابجا میکنه بتونه صدا رو هم جابجا کنه اینو چطور انجام بدم؟

  19. #19
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    ولی فقط 0 را نشان میده توی timer نوشتمش ولی ارور داد
    چون هنوز موسیقی آماده نشده... این کدتون رو در رویداد PlayStateChange بنویسید.

    همچنین کاربر وقتی میخواد صدا رو جلو و عقب کنه باید وقتی track bar رو جابجا میکنه بتونه صدا رو هم جابجا کنه
    به خاصیت axWindowsMediaPlayer1.Ctlcontrols.currentPosition مقدار زمان رو برحسب ثانیه بدید. (در رویداد Scroll)

  20. #20
    به خاصیت axWindowsMediaPlayer1.Ctlcontrols.currentPosition مقدار زمان رو برحسب ثانیه بدید. (در رویداد Scroll)
    یعنی چی ؟

  21. #21
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    یعنی اینکه یک TrackBar به فرم اضافه کرده و در رویداد Scroll از کنترل trackBar1 کد زیر رو می نویسیم:

    axWindowsMediaPlayer1.Ctlcontrols.currentPosition = trackBar1.Value;

    که باعث میشه به همان اندازه ای که Scroll صورت می گیره، مکان پخش آهنگ هم به همان اندازه جلو یا عقب بره. البته این حالت در صورت درست خواهد بود که قبلش کد زیر نوشته شده باشه:

    trackBar1.Maximum = (int)Math.Ceiling(axWindowsMediaPlayer1.currentMed ia.duration);

    حداکثر مقداری که trackBar1.Value میتونه داشته باشه از طریق کد بالا تعیین میشه.
    که از متد Math.Ceiling استفاده شده تا مقدار currentMedia.duration را به عدد صحیح رو به بالا گرد کنه.
    حالا چرا از دو کد فوق اینطوری استفاده کردیم؟
    روش کار به اینصورته که میآیم و زمان کل آهنگ رو بعنوان ماکزیمم مقدار trackBar1 مشخص میکنیم. پس طولی که trackBar1 میتونه Scroll کنه، برابر با طول زمان پخش آهنگ خواهد بود، هر جا که Scroll قرار داشته باشه (خاصیت Value)، زمان سپری شده از آهنگ هم باید در همونجا قرار داده بشه (مثل اصل تشابه در ریاضیات در نظر بگیرید چون طول trackBar1 با زمان کل آهنگ برابره).
    اگر میخواهید یک نمونه ببینید، همون نمونه برنامه ای که گذاشته بودم، TrackBar اش رو Scroll کنید، همون کاری رو میکنه که میخواهید.

  22. #22
    مرسی PC2st.ir مهربون
    یه سؤال؟
    من از کجا باید بفهمم که کدهایم را در چه رویدادی باید بنویسم؟

  23. #23
    ببخشیدا!
    ولی پس چرا مال من اصلا هیچی در خروجی نشان نمیده؟
    حتی 00000000000 رو :-(

  24. #24
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    میشه اون قسمت از کدی که اشکال داره رو اینجا بنویسید، و لطفا بگید که کدها جزء کدوم رویداد هستند؟

  25. #25
    اصلا اشکال نداره که error هم نمیده فقط label خالی است
    privatevoid button3_Click(object sender, EventArgs e)
    {
    SoundPlayer sp = newSoundPlayer(@"F:\Programming\GhazalNama\GhazalNama\GhazalNama\ Resources\WAV\4.wav");
    Stopwatch mywatch = newStopwatch();
    if (button3.Text == "Start")
    {

    mywatch.Start();
    button3.Text =
    "Stop";
    sp.Play();


    }
    elseif (button3.Text == "Stop") {
    mywatch.Stop();
    sp.Stop();
    button3.Text =
    "Start";
    double TimeSpent = mywatch.ElapsedMilliseconds / 100D;
    label2.Text =
    string.Format("Elapsed time :{0} Seconds", TimeSpent.ToString("#,##.##"));

    }

  26. #26
    مرسی PC2st.ir مهربون
    یه سؤال؟
    من از کجا باید بفهمم که کدهایم را در چه رویدادی باید بنویسم؟

  27. #27
    آخ واقعا باید ببخشید این کدها مال یه سؤال دیگه بود که ازتون پرسیده بودم
    و الا این track bar مسئله اش حل شد
    اصلا حواسم نبود:-(

  28. #28
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491

    Stopwatch mywatch = new Stopwatch();

    کد فوق نباید درون متد button3_Click باشه، باید بعنوان یک فیلد از کلاس معرفی اش کنید:

    Stopwatch mywatch = new Stopwatch();

    private void button3_Click(object sender, EventArgs e)
    {
    SoundPlayer sp = new SoundPlayer(@"F:\Programming\GhazalNama\GhazalNama \GhazalNama\Resources\WAV\4.wav");
    if (button3.Text == "Start")
    {
    mywatch.Start();
    button3.Text = "Stop";
    sp.Play();
    }
    else if (button3.Text == "Stop")
    {
    mywatch.Stop();
    sp.Stop();
    button3.Text = "Start";
    double TimeSpent = mywatch.ElapsedMilliseconds / 100D;
    label2.Text = string.Format("Elapsed time :{0} Seconds", TimeSpent.ToString("#,##.##"));
    }
    }

  29. #29
    مرسی مرسی مرسی و باز هم مرسی
    ببخشید من یک کم سر به هوا هستم فکر کنم یکدفعه اینو بهم گفتید ولی یادم رفته بود اجراش کنم :-(
    ولی واقعا یک دنیا تشکر
    حالا راستی چرا وقتی تو ی متد button3_Click نوشتم جواب نمیداد ولی وقتی به عنوان فیلد کلاس نوشتم جواب داد؟

  30. #30
    یه چیز دیگه:
    حالا اگه بخوام بر عکس این رو داشته باشم برای یک مسابقه که مدت داره و این مدت رو من سیستم تعیین میکنم نه هر زمان که کاربر خواست طول بده) تایمر بر عکس ( این چه جوریه؟؟؟؟؟؟؟

  31. #31
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    حالا راستی چرا وقتی تو ی متد button3_Click نوشتم جواب نمیداد ولی وقتی به عنوان فیلد کلاس نوشتم جواب داد؟
    طول عمر فیلدها به اندازه طول عمر استفاده از یک کلاس است.
    طول عمر یک متغیری که در یک متد تعریف میشه، به اندازه طول عمر همان متد است، یعنی با پایان دستورات متد، متغیر نابود میشه و به طبع اطلاعاتش هم از بین میره.

    حالا اگه بخوام بر عکس این رو داشته باشم برای یک مسابقه که مدت داره و این مدت رو من سیستم تعیین میکنم نه هر زمان که کاربر خواست طول بده
    برای برعکس این حالت، باید زمان کل از زمانی سپری شده کم بشه یا یک واحد همینطوری ازش کم بشه، مثلا برای trackBar1، قبلش یک طول حداکثر را براش مشخص میکنیم و مقدار فعلی Scroll را روی حداکثر تنظیم میکنیم:

    trackBar1.Maximum = 100;
    trackBar1.Value = 100;

    بعد باید کد زیر رو در رویداد Tick از کنترل timer1 بنویسم تا هر بار که یک ثانیه میگذره (Interval = 1000)، اون وقت trackBar1 مقدارش عوض بشه تا کاربر متوجه بشه که چقدر مهلت داره تا به سوال پاسخ بده، یعنی مینویسیم:

    private void timer1_Tick(object sender, EventArgs e)
    {
    if (trackBar1.Value != 0)
    trackBar1.Value--;
    }

    همین... نمیدونم منظورت همین بود یا چیز دیگه...

  32. #32
    اینها در ست پس چه طوری زمان مثلا یک دقیقه برای پاسخ دادن را در کد مشخص کنم ؟

  33. #33
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    چون میخوایم زمان یک دقیقه باشه:

    trackBar1.Maximum = 60;
    trackBar1.Value = 60;


    هر وقت trackBar1.Value به صفر رسید یعنی زمان به صفر رسیده، این رو میشه در داخل timer1 تشخیص داد، مثلا:

    private void timer1_Tick(object sender, EventArgs e)
    {
    if (trackBar1.Value > 0)
    trackBar1.Value--;
    else
    {
    timer1.Enabled = false;
    MessageBox.Show("Your time is over.");
    CheckUserAnswerds();
    }
    }

    که مثلا متد CheckUserAnswerds مشخص میکنه که کاربر چند تا سوال رو درست و چند تا رو غلط جواب داده و وقتی timer1.Enabled برابر false باشه، دیگه timer1 کار نمیکنه تا وقتی که true بشه.

  34. #34
    البته ببخشید که من جسارت میکن ولی توی اون چند تا پست قبلی که گفتید \100D رو بنویسم به جای تعداد ثانیه ها عددی با شکل مثلا 567.89 نشان میداد ولی وقتی پاکش کردم درست شد

  35. #35
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    امیدوارم ببخشید، چون فکر میکردم میخواستید ازش درصد بگیرید...

  36. #36
    جناب PC2st.ir وقتی کد بالا رو نوشتم messageBox.show() افتاد تو loop خیلی باهال ولی بد بود
    اگر بخوام به جای trachbar زمان باقیمانده توی یه label نشون داده بشه باید چه کنم ؟

  37. #37
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    باید از DateTime استفاده بشه، که مثلا اگر بخوایم یک دقیقه به کاربر مهلت بدیم که به سوالات پاسخ بده:

    DateTime dt = new DateTime(1,1,1,0,1,0);

    که متغیر dt رو بعنوان یک فیلد در کلاس تعریف میکنیم.
    بعدش خاصیت Interval از شیئ timer1 را روی 1000 (یعنی 1 ثانیه) تنظیم میکنیم و در رویداد Tick از timer1 کد زیر رو مینویسیم:

    if(this.dt.TimeOfDay.TotalSeconds > 0)
    {
    this.dt = this.dt.AddSeconds(-1);
    this.label1.Text = this.dt.ToString("HH:mm:ss");
    }
    else
    {
    this.timer1.Enabled = false;
    //more codes here...
    }

  38. #38
    مرسی مرسی PC2st.ir دقیقا همینو میخواستم

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •