0 امتیاز

سلام دوستان..من یک پروژه ساده ایجاد کردم با استفاده از TRACKbar و یک picturtebox..

به این صورت...
​هر قدر مقدار این trackbar زیاد میشه ، این عکس به طرف راست حرکت میکنه..حالا مشکل اینجاست که اگر عکس بیش از حد حرکت بکنه از فرم خارج میشه
نمیشه کاری کرد که اگر به لبه سمت راست فرم رسید، دیگه عکس حرکت نکنه و یا به نوعی stop بشه​؟؟؟؟

کدتونو بذارین تا بررسی کنم
توسط (3,483 امتیاز) 6 13 87

3 پاسخ

+2 امتیاز

سلام دوست عزیز

برای رفع اشکال میباست کدهای خودتونو داخل پست میزاشتید

اما بهر حال  برای میبایست برای خارج نشدن عکس در این موضوع چند گزینه را باید مد نظر داشته باشی

ابتدا

از پروپرتی های ترک بارتنظیم گزینه maximum  

و تنظیمات خود picbox

اینم لینک پروژه  http://s8.picofile.com/file/8319291368/picbox_trackbar.rar.html

namespace picbox_trackbar
{
    public partial class Form1 : Form
    {
       
        public Form1()
        {

            InitializeComponent();
            
        }

        private void Form1_Load(object sender, EventArgs e)
        {
         trackBar1.Value = pictureBox1.Size.Width;
       trackBar2.Value = pictureBox1.Size.Height;
            pictureBox1.Left = (this.ClientSize.Width - pictureBox1.Width) / 2;
            pictureBox1.Top = (this.ClientSize.Height - pictureBox1.Height) / 2;
        }



        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog opf = new OpenFileDialog();
         
            opf.Filter = "Choose Image(*.jpg;*.png;*.gif)|*.jpg;*.png;*.gif";

            if (opf.ShowDialog() == DialogResult.OK)
            {
                // درج تصویر 
                pictureBox1.Image = Image.FromFile(opf.FileName);
            }
        }

        private void trackBar1_Scroll(object sender, EventArgs e)
        {
            pictureBox1.Size = new Size(trackBar1.Value, pictureBox1.Size.Height);
            pictureBox1.Left = (this.ClientSize.Width - pictureBox1.Width) / 2;
            pictureBox1.Top = (this.ClientSize.Height - pictureBox1.Height) / 2;
        }

        private void trackBar2_Scroll(object sender, EventArgs e)
        {
            pictureBox1.Size = new Size(pictureBox1.Size.Width, trackBar2.Value);
            pictureBox1.Left = (this.ClientSize.Width - pictureBox1.Width) / 2;
            pictureBox1.Top = (this.ClientSize.Height - pictureBox1.Height) / 2;
        }
    }
}

 

فوق العاده عالی، مرسی
توسط (138 امتیاز) 3
سلام و بسیار ممنون بابت کدی که گذاشتین ولی احتمالا سوال رو درست متوجه نشدین. دوستمون گفتن که پیکچر باکس از سمت چپ و راست فرم بیرون نزنه
توسط (3,483 امتیاز) 6 13 87

ضمن تشکر

اگه 

از پروپرتی های ترک بارتنظیم گزینه maximum  رو با انندازه مناسب ست کنه 

این اتفاق نمی افته تصاویر پایین رو ببنید

اما تصویر اولی اندازه ماکزیم 250 شده

تصویر دوم مقدار ماکزیم روی 400 هستش و تصویر بیرون از picbox هستش

البته اگه از ویزارد تنظیم نکرده این کد رو بزاره توی لود فرم

 pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;

 

 

توسط (7,164 امتیاز) 4 7 141
مهندس منظورش اینه که فرض کنید اندازه پیکچر باکس ثابت و مثلا 100 * 100 باشه و با اسکرول کردن این پیکچر باکس به سمت راست یا چپ ((حرکت)) کنه یعنی اندازه طول و عرض رو نمیخواد تغییر بده، میخواد با همین اندازه ثابت به این سمت و اون سمت حرکت کنه
توسط (3,483 امتیاز) 6 13 87

در این صورت میبایست کدهاتونو بزارید تا بررسی کنم

البته امروز سرحالم یعنی از شرکت مرخصی گرفتم اگه بزاری به امید خدا حله

توسط (7,164 امتیاز) 4 7 141
بسیار ممنون
توسط (3,483 امتیاز) 6 13 87
سلام مهندس، ممنون میشم این سوال رو جواب بدین، چون خیلی وقته ذهنمو درگیر کرده
توسط (3,483 امتیاز) 6 13 87

دوست عزیز بیزحمت کدهاتونو بزارید

توسط (7,164 امتیاز) 4 7 141

این کدیه که نوشتم، البته با تایمر کار میکنه و اجازه نمیده که picturebox از سمت راست و چپ بیرون بره، ولی همینو میخوام که با trackbar پیاده سازی کنم

using System;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            timer1.Enabled = true;
            timer1.Interval = 50;
            timer1.Start();
        }

        private int velocity = 5;

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (pictureBox1.Left <= 0 || pictureBox1.Width + pictureBox1.Left > this.ClientSize.Width)
                velocity = -velocity;

            pictureBox1.Left += velocity;
        }      
    }
}
توسط (3,483 امتیاز) 6 13 87

برای velocity چه مقداری دادید>

 

کدها کامل نیست هرکدی مربوط به تصویر و ترک بار هست باید بزارید

توسط (7,164 امتیاز) 4 7 141

چرا کدها کامله، به کدهای بالا دقت کنید. velocity  مقدارش 5 ه

من یه تایمر و یک picturebox رو فرم گذاشتم و کدهای بالا رو نوشتم.

مقدار Enabled کنترل timer رو true و مقدار interval شو 50 دادم و بعد تو سازنده فرم و رویداد تیک timer کدهای زیر رو نوشتم . الان تست کردم درست کار میکنه

public Form1()
{
    InitializeComponent();
    timer1.Start();
}

private int velocity = 5;

private void timer1_Tick(object sender, EventArgs e)
{
    if (pictureBox1.Left <= 0 || pictureBox1.Width + pictureBox1.Left > this.ClientSize.Width)
        velocity = -velocity;

    pictureBox1.Left += velocity;
}  
توسط (3,483 امتیاز) 6 13 87

ببینید ایا این چیزیه که دنبالش هستین

http://s8.picofile.com/file/8319882184/source.zip.html

 

توسط (7,164 امتیاز) 4 7 141

خیر، اول این سوال رو دوست عزیز با نام کاربری Vmnet1  پرسیدن و منم کنجکاو شدم که یادش بگیرم. شما کلا و به احتمال زیاد سوال رو اشتباه متوجه شدین. همین کدی که بنده نوشتم رو با trackbar نه scrollbar میخواد پیاده سازی کنه، یه کنترل picturebox که به سمت راست و چپ ((حرکت)) میکنه. اندازه کل picturebox فرض کنید 100*100 ه و اندازه مثلا فرم 600*600 و این پیکچر باکس قراره با trackbar به سمت چپ و راست حرکت کنه

توسط (3,483 امتیاز) 6 13 87
+2 امتیاز

شما این فیلم رو ببینید از پروژه گرفتم ببین منظورتون اینه

 

تو حین اجرا که از لبه ها خارج نشد

 

http://s8.picofile.com/file/8319883250/Main_2018_02_20_11_26_23.mp4.html

 

 

 

خب این درسته، ولی من تو فیلم trackbar ی ندیدم، شکل زیر رو ببینید، با چپ و راست کردن trackbar میخوام این پیکچر باکس حرکت کنه نه با تایمر

توسط (3,483 امتیاز) 6 13 87
+2 امتیاز

دوست عزیز 

کدهاتونو اصلاح کردم و به 2 رش میتوین تصویر رو حرکت بدید اول

با موس میتوین هرجای فرم خواستین عکس رو منتقل کنین

بعدی هم که روش خودتونه و ایدفعه تصویر از فرم خارج نمیشه امیدوارم مورد استفادتون واقع بشه

 

http://s9.picofile.com/file/8319898784/trackbar_pic.rar.html

 

 

سلام، بسیار بسیار ممنون بابت پیگیریتون،

ولی بازم کد ایراد داره، درسته از فرم بیرون نمیزنه ولی من میخوام وقتی که trackbar رو کامل به سمت راست کشیدم، پیکچر باکس هم همزمان به انتهای سمت راست بیاد و وقتی trackbar رو به سمت چپ کشیدم پیکچرباکس هم همزمان به سمت چپ فرم بیاد، در حالی که تو کدی که شما نوشتین وقتی که trackbar کامل به سمت مثلا راست میاد، پیکچر باکس تقریبا یه مسیر رفت و برگشت رو طی می کنه.

پس در نهایت من اینو میخوام که با کشیده شدن trackbar به سمت راست ، پیکچرباکس به انتهای سمت راست فرم بیاد و با کشیده شدن trackbar به سمت چپ، پیکجر باکس به سمت چپ کشیده بشه و به انتهاش برسه
توسط (3,483 امتیاز) 6 13 87
سوال جدید

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,921 کاربر

دسته بندی ها

...