تبدیل point به pixel وبلعکس

m_mx2009

Member
سلام به همه.
کسی میدونه چطور میشه واحد pixel رو به point تبدیل کرد؟
یه کنترل روی فرم دارم و میخوام سایزش با تغییر سایز فرم تغییر کنه ولی اندازه فرم بر حسب پیکسله و اندازه کنترل بر حسب پوینت.
متشکر از همه
 

bitaroos

Member
تا اونجایی که یادم مونده تعداد point ها در یک inch برابر 72 هست.
ولی تعداد پیکسل ها در یک inch میتونه متفاوت باشه (یعنی قابل تغییره) ولی معمولا توی کارهای گرافیکی که برای نمایش روی مانیتور استفاده میشه، توی هر اینچ 72 یا 96 پیکسل در نظر گرفته میشه

اگر 1inch=72pixel می شه گفت point=pixel و هیچ تبدیلی نمیخواد.
اگر هم 1inch=96pixel باید از یه تناسب ساده استفاده کنی points = pixels * 72 / 96 و pixels = points * 96 / 72

البته مطمئن نیستم ها چون اصلا نمیدونم این فرم شما چی هست و برای چکار طراحی شده؟
--------------------------------------------------------------------------------------------------------------------------
ولی چرا اصلا اینکار کنی یه روش خیلی ساده که به تبدیل هم احتیاج نداره = حذف کردن واحد ها و کار با درصد
--------------------------------------------------------------------------------------------------------------------------
تعداد پیکسل افقیه فرم و تعداد پیکسل عمودیه فرم رو قبل از تغییر سایز فرم، توی متغیر ذخیره کن (مثلا هنگام رخداد FormLoad)

تعداد پیکسل افقی فرم و تعداد پیکسل عمودی فرم رو بعد از تغییر سایز فرم، توی یه متغیر دیگه ذخیره کن (مثلا هنگام رخداد ّFormResize)
برای کنترلت هم مقدار اولیه رو تو یه متغیر دیگه (هنگام رخداد FormLoad) ذخیره کن

کد:
        private Size bfrForm = new Size(); //form Size, before resizing
        private Size afrForm = new Size(); //form Size, after resizing

        private Size bfrCtl = new Size(); //Control Size, before resizing

        private void Form1_Load(object sender, EventArgs e)
        {
            bfrForm.Width = this.Width;
            bfrForm.Height = this.Height;

            bfrCtl.Width = button1.Width;
            bfrCtl.Height = button1.Height;
        }
کد:
        private void Form1_Resize(object sender, EventArgs e)
        {
            afrForm.Width = this.Width;
            afrForm.Height = this.Height;

            button1.Width = (int)(bfrCtl.Width * ((float)afrForm.Width / (float)bfrForm.Width));
            button1.Height = (int)(bfrCtl.Height * ((float)afrForm.Height / (float)bfrForm.Height));

        }
اینجا اومدیم درصد تغییر سایز فرم رو با یه تقسیم یاده بدست آوردیم البته به چون یه عددی بین صفر و یک هست باید به float تبدیلش کنیم

کد:
((float)afrForm.Width / (float)bfrForm.Width)
اگه float نکنیم مقدارمون یا صفر میشه یا پله ای افزایش پیدا میکنه

و در آخر این مقدار اعشاری رو در مقدار اولیه ابعاد button (که تو form load ذخیرش کرده بودیم) ضرب میکنیم


.
 

پیوست ها

  • WindowsFormsApplication2.rar
    33.8 کیلوبایت · بازدیدها: 0
آخرین ویرایش:

bitaroos

Member
راستی اون wpf که بهت گفته بودم. این مشکل رو به راحتی حل کرده، با 2 تا کلیک ساده.
 

m_mx2009

Member
راستی اون wpf که بهت گفته بودم. این مشکل رو به راحتی حل کرده، با 2 تا کلیک ساده.

خیلی ممنونم رفیق ، پست قبلیت واقعا مفید بود.
راستشو بخوای من زیاد در زمینه #C حرفه ای نیستم.چون تازه کارم و حدود دو سه هفته بیشتر نیست که شروع کردم.به نظر من باید برنامه بنویسیم تا برنامه نویسی رو یاد بگیریم.
ایشالا روی این WPF هم که گفتین کار میکنم.
ما مبتدی ها رو حمایت کنید!!!!:lol:
 

bitaroos

Member
خیلی ممنونم رفیق ، پست قبلیت واقعا مفید بود.
راستشو بخوای من زیاد در زمینه #C حرفه ای نیستم.چون تازه کارم و حدود دو سه هفته بیشتر نیست که شروع کردم.به نظر من باید برنامه بنویسیم تا برنامه نویسی رو یاد بگیریم.
ایشالا روی این WPF هم که گفتین کار میکنم.
ما مبتدی ها رو حمایت کنید!!!!:lol:
خواهش رفیق، بابا من مبتدی تر از تو هستم(جدی میگم). این سوال هایی هم که پرسیدی، چند ماه پیش مشکل خود من بود. یه چند تا سوال دیگه بپرسی می بینی کی حرفه ایه و کی نیست.

در مورد Wpf هم یه چیزایی تو پست زیر نوشتم بودم،
البته قول نمیدم 100% درست باشه اینا برداشت های من از WPF در سال گذشته هستن
http://forum.majidonline.com/showthread.php?t=152570
البته کلیاتش همینه
 

m_mx2009

Member
در مورد Wpf هم یه چیزایی تو پست زیر نوشتم بودم،
البته قول نمیدم 100% درست باشه اینا برداشت های من از WPF در سال گذشته هستن
http://forum.majidonline.com/showthread.php?t=152570
البته کلیاتش همینه

هرچند که هنوز یه جوجه برنامه نویس هستم ، ولی خیلی دوس دارم برنامه هایی که مینویسم گرافیکی باشند.
این WPF خیلی خوبه ولی باید کار باهاش رو یاد گرفت.
از پست قبلیتون به ثبت نام فتوشاپ هم رسیدم که متاسفانه مثل اینکه دیر شده، :cry:
خیلی دوست داشتم فتوشاپ و گرافیک هم کار کنم.

خیلی ممنون از لطفت.:rose:
 

جدیدترین ارسال ها

بالا