PDA

View Full Version : سوال: تغییر واحد سانتی متر به Pixel



rasoul2023
یک شنبه 13 دی 1388, 15:42 عصر
سلام دوستان :

من یه Picture Box دارم که میخوام اندازه های اونو تغییر بدم از کد زیر این کار را نجام میدم .


PictureBox1.Size = New Size(TextBox1.Text, TextBox2.Text)


خوب حالا مسئله اینجاست که مقادیر ورودی بر حسب سانتی متر هستند و فرمت Scale با Picture box یکی نیست . یعنی اینکه باید سانتی متر را به واحد طولی Picture box تبدیل کنم . آیا راهی هست ؟
واحد اندازه گیری Picture box همون Pixel یا Towip ؟؟؟؟

gigidagostino
یک شنبه 13 دی 1388, 16:11 عصر
سلام
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

gigidagostino
یک شنبه 13 دی 1388, 16:15 عصر
اینم برای 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"));
}
}

}

rasoul2023
یک شنبه 13 دی 1388, 18:31 عصر
ببخشید ترجمشم میگم:
DPI رو محاسبه کنید




سلام دوست عزیز منظورتون از dpi را محاسبه کن چیه چطوری میشه محاسبش کرد ؟ واسه من اصلا کیفیت عکس مهم نیست فقط میخوام که Picture box به اندازه سانتی متر که کاربر وارد میکنه بشه و چون واحد اندازه picture box پیکسل هست من این تبدیل را نیاز دارم و کار دیگه ای هم نمیخوام بکنم .

gigidagostino
یک شنبه 13 دی 1388, 18:39 عصر
سلام.:لبخند: سوالای سخت میپرسید.راستش از روی رزولیشن حساب میشد.هرچی رزولیشن بالا میرفت اینم زیاد میشد.(Dot Per Inch).الان تو ذهنم نیست .عجله دارید؟اگه برای خودتونه معمولا مقدارش یا 96 یا 100 یا 120 هست.

gigidagostino
یک شنبه 13 دی 1388, 19:15 عصر
Dim dpi As Graphics = Me.CreateGraphics
MessageBox.Show(String.Format("X={0}, Y={1}", dpi.DpiX, dpi.DpiY))

اینم مقدار dpi رو میده.بزاریش تو اون فورمولا تبدیل رو میتونید انجام بدید

rasoul2023
یک شنبه 13 دی 1388, 19:20 عصر
ببینید دوست عزیز اینکه میگم نیازی نیست بخاطر اینه که من روی فرمم یه خط کش دارم و اندازه هام که توی هر ریزولیشنی جواب میده را دقیق حساب میکنم . حالا مونده فقط اندازه تصویرم که چون بلد نیستم با موس اندازه هاشو تغییر بدم از این روش دستی استفاده کنم . حالا اگه میدونید چطور میشه یه picture box را توی حالت Run time با موس اندازه هاشو تغییر داد مثل Paint که خوب کارم راه میفته اگه هم نمیدونید که خوب مجبورم از همون حالت دستی استفاده کنم .

rasoul2023
یک شنبه 13 دی 1388, 19:28 عصر
:گیج: من که اصلا از اینا سر در نمیارم :افسرده: شما مگه نگفتید ضرب در dbi پس این X,Y چیه دیگه مگه Dpi یه عدد نیست ؟:گریه: آیا منظور اینه که برای عدد طولی ضرب در dpi ایکس و برای عرض ضرب در Y بشه ؟

gigidagostino
یک شنبه 13 دی 1388, 20:58 عصر
سلام
نمیدونم عمودی و افقیش چه فرقی دارن.رو سیستم من دوتاش یکه و برابر همون 96 بود.نمیدونم بقیه دوستان چرا کمک نمیکنند؟

rasoul2023
یک شنبه 13 دی 1388, 21:30 عصر
آقا تشکر . تست کردم همون بود که گفتم برای Width طبق فرمول شما باید در Dpi x ضرب بشه و برای Height هم در Dpi y البته برای منم هر دوشون 96 بود که میشه تو همون مقدار یکی ( طبق فرمولی که گفته شد ) ضرب کرد اما اگه ریزولیشن تغییر کنه dpi هم تغییر میکنه تو یکی از محور ها ولی از اونجایی که کاربرا تنظیمات خودشون را جوری انجام میدند که صفحه مانیتور از گوشه ها فاصله ای نداشته باشه معمولا و طبق استاندارد یکی هستند ولی خوب اومدیم یکی دوست نداشت تنظیماتش خوب باشه یا کارت گرافیکش مشکل داشت . واسه همین باید هر دو را اعمال کرد .

آقا بازم ممنون البته تشکر هم ثبت کردم .

sari-1369
یک شنبه 13 دی 1388, 22:02 عصر
هر 1 سانتی متر برابره با 38 پیکسل . حالا دیگه خودت حساب کن ، هر مقداری که کاربر وارد کرد در 38 ضرب کن .