تغییر واحد سانتی متر به Pixel
سلام دوستان :
من یه Picture Box دارم که میخوام اندازه های اونو تغییر بدم از کد زیر این کار را نجام میدم .
PictureBox1.Size = New Size(TextBox1.Text, TextBox2.Text)
خوب حالا مسئله اینجاست که مقادیر ورودی بر حسب سانتی متر هستند و فرمت Scale با Picture box یکی نیست . یعنی اینکه باید سانتی متر را به واحد طولی Picture box تبدیل کنم . آیا راهی هست ؟
واحد اندازه گیری Picture box همون Pixel یا Towip ؟؟؟؟
نقل قول: تغییر واحد سانتی متر به Pixel
سلام 1. Determine the dpi resolution of your target.
2. For inches: pixels = inches * dpi
3. For cm: pixels = cm / 2.54 * dpi
ببخشید ترجمشم میگم:
DPI رو محاسبه کنید
برای سانتیمتر از pixels = cm / 2.54 * dpi
و برای اینچ از . pixels = inches * dpi
نقل قول: تغییر واحد سانتی متر به Pixel
اینم برای Twip اما با #C
A twip is 1/1440 of an inch
private static void SetUpTwipsPerPixel(bool Force /* = false */)
{
if (!Support.m_IsTwipsPerPixelSetUp || Force)
{
Support.m_TwipsPerPixelX = 0;
Support.m_TwipsPerPixelY = 0;
try
{
IntPtr ptr1 =
NativeMethods.GetDC(NativeMethods.NullIntPtr);
if (!ptr1.Equals(NativeMethods.NullIntPtr))
{
Support.m_TwipsPerPixelX = 1440 / ((double)
NativeMethods.GetDeviceCaps(ptr1, 0x58));
Support.m_TwipsPerPixelY = 1440 / ((double)
NativeMethods.GetDeviceCaps(ptr1, 90));
NativeMethods.ReleaseDC(NativeMethods.NullIntPtr, ptr1);
}
}
catch (Exception exception1)
{
ProjectData.SetProjectError(exception1);
ProjectData.ClearProjectError();
}
Support.m_IsTwipsPerPixelSetUp = true;
if ((Support.m_TwipsPerPixelX == 0) ||
(Support.m_TwipsPerPixelY == 0))
{
Support.m_TwipsPerPixelX = 15;
Support.m_TwipsPerPixelY = 15;
VB6Errors.RaiseError(7,
Resources.GetResourceString("Misc_SetUpTwipsPerPix el"));
}
}
}
نقل قول: تغییر واحد سانتی متر به Pixel
نقل قول:
نوشته شده توسط
gigidagostino
ببخشید ترجمشم میگم:
DPI رو محاسبه کنید
سلام دوست عزیز منظورتون از dpi را محاسبه کن چیه چطوری میشه محاسبش کرد ؟ واسه من اصلا کیفیت عکس مهم نیست فقط میخوام که Picture box به اندازه سانتی متر که کاربر وارد میکنه بشه و چون واحد اندازه picture box پیکسل هست من این تبدیل را نیاز دارم و کار دیگه ای هم نمیخوام بکنم .
نقل قول: تغییر واحد سانتی متر به Pixel
سلام.:لبخند: سوالای سخت میپرسید.راستش از روی رزولیشن حساب میشد.هرچی رزولیشن بالا میرفت اینم زیاد میشد.(Dot Per Inch).الان تو ذهنم نیست .عجله دارید؟اگه برای خودتونه معمولا مقدارش یا 96 یا 100 یا 120 هست.
نقل قول: تغییر واحد سانتی متر به Pixel
Dim dpi As Graphics = Me.CreateGraphics
MessageBox.Show(String.Format("X={0}, Y={1}", dpi.DpiX, dpi.DpiY))
اینم مقدار dpi رو میده.بزاریش تو اون فورمولا تبدیل رو میتونید انجام بدید
نقل قول: تغییر واحد سانتی متر به Pixel
ببینید دوست عزیز اینکه میگم نیازی نیست بخاطر اینه که من روی فرمم یه خط کش دارم و اندازه هام که توی هر ریزولیشنی جواب میده را دقیق حساب میکنم . حالا مونده فقط اندازه تصویرم که چون بلد نیستم با موس اندازه هاشو تغییر بدم از این روش دستی استفاده کنم . حالا اگه میدونید چطور میشه یه picture box را توی حالت Run time با موس اندازه هاشو تغییر داد مثل Paint که خوب کارم راه میفته اگه هم نمیدونید که خوب مجبورم از همون حالت دستی استفاده کنم .
نقل قول: تغییر واحد سانتی متر به Pixel
:گیج: من که اصلا از اینا سر در نمیارم :افسرده: شما مگه نگفتید ضرب در dbi پس این X,Y چیه دیگه مگه Dpi یه عدد نیست ؟:گریه: آیا منظور اینه که برای عدد طولی ضرب در dpi ایکس و برای عرض ضرب در Y بشه ؟
نقل قول: تغییر واحد سانتی متر به Pixel
سلام
نمیدونم عمودی و افقیش چه فرقی دارن.رو سیستم من دوتاش یکه و برابر همون 96 بود.نمیدونم بقیه دوستان چرا کمک نمیکنند؟
نقل قول: تغییر واحد سانتی متر به Pixel
آقا تشکر . تست کردم همون بود که گفتم برای Width طبق فرمول شما باید در Dpi x ضرب بشه و برای Height هم در Dpi y البته برای منم هر دوشون 96 بود که میشه تو همون مقدار یکی ( طبق فرمولی که گفته شد ) ضرب کرد اما اگه ریزولیشن تغییر کنه dpi هم تغییر میکنه تو یکی از محور ها ولی از اونجایی که کاربرا تنظیمات خودشون را جوری انجام میدند که صفحه مانیتور از گوشه ها فاصله ای نداشته باشه معمولا و طبق استاندارد یکی هستند ولی خوب اومدیم یکی دوست نداشت تنظیماتش خوب باشه یا کارت گرافیکش مشکل داشت . واسه همین باید هر دو را اعمال کرد .
آقا بازم ممنون البته تشکر هم ثبت کردم .
نقل قول: تغییر واحد سانتی متر به Pixel
هر 1 سانتی متر برابره با 38 پیکسل . حالا دیگه خودت حساب کن ، هر مقداری که کاربر وارد کرد در 38 ضرب کن .