View Full Version : گذاشتن Scale برای یوزر کنترل
فاطمه وطن دوست
جمعه 04 مرداد 1387, 18:17 عصر
سلام
برای اینکه بخوای برای یوزر کنترل Scale بزاری چی کار باید کرد ؟
باید این خصوصیت رو براش کد نویسی کرد درسته ؟
با توجه به تصویر میبینید که یه اشکال هست .
چون x یوزر کنترل که در کپشن فرم نشون میده با توجه به مبداء مختصات درست نیست.
سمت چپ ( منفی هان درسته !!!!!!!!!!!!!!!!!!!!!!)
تعیین Area_Tarsim.Pb.Scale ===================================
Area_Tarsim.Pb.Scale (-100, 100)-(100, -100)
امیدوارم سوالم واضح باشه. تصویرو هم برای واضح تر بودن سوال گذاشتم .
لطفا هر کس هر نظری داره بگه شاید مشکلم حل بشه .
vahid_d_0101
جمعه 04 مرداد 1387, 21:07 عصر
این سوالو میگم یه کم روشن تر توضیح بدید من که مشکل را نفهمیدم اگه میشه دقیق تر توضیح بدید
با تشکر
فاطمه وطن دوست
جمعه 04 مرداد 1387, 22:34 عصر
سلام
این لینکا رو بی زحمت ببینید تا متوجه بشین قراراه چه کاری انجام بشه .
http://barnamenevis.org/forum/showthread.php?t=112619&highlight=SCALE
http://barnamenevis.org/forum/showthread.php?t=111543&highlight=SCALE
در کل میخوام وقتی دکمه Zoom In زده بشه هم ترسیمات و هم یوزر کنترل خط که روی ترسیمات قرار دادیم ، ابعادش به اندازه ی مشخصی بیشتر بشه .( حتما لینکی که قبلا بهتون دادم رو ببینید همون شکل سوله - خطوط قرمز رنگ یوزر کنترل خط هست ولی خطوط مشکی ترسیمات اند.)
البته تو موقع zoom کردن یوزر کنترل و خط بین خط و یوزر کنترل
حدودا به اندازه ی 10 واحد ایکس هاشون اختلاف داره .
که من برای بار اول به ایکس یوزر کنترل 10 واحد اضافه کردم برای دفعات بعدی این اختلاف در حال تغییر کردنه که مشخص نیست چند تا چند تا بیشتر میشه ، بازم به طوری که با چند بار zoom in کردن اختلاف خیلی زیاد میشه .و دیگه یوزر کنترل خط روی خطی که گذاشتیم نیست .
ASKaffash
شنبه 05 مرداد 1387, 10:29 صبح
سلام
من خیلی متوجه صورت مسئله نشدم هر چند که همه Link ها را خواندم ولی اگر مسئله روی ZoomIn/ZoomOut است چند چیز خیلی مهم است بستگی دارد کار گرافیکی شما چیست ؟ شاید بتوان با استفاده از یک Engine مثل MapObject2.0 موضوع را حل کرد این ابزارها بصورت قدرتمندی عملیات ZoomIn و ZoomOut را انجام میدهند. در ضمن برای عملیات Zoom یک متغیر بزرگنمائی انتخاب میشود و در هنگام ترسیمات گرافیکی مثل خط و نقطه و .. کلیه ابعاد در محدوده قابل ترسیم در بزرگنمائی ضرب میشوند مثلا
در این قطعه کد متغیر MyNewZoom این عمل را برای ابعاد فونت انجام میدهد :
Public Sub AutoSize(Optional ByVal SeriAutoSize As Boolean = True)
On Error Resume Next
MyNewZoom = (UserControl.ScaleWidth / 12000)
If MyNewZoom < 0.1 Then
MyNewZoom = 0.1
End If
With MainChart
.Area.Left = 0.075 * UserControl.ScaleWidth
.Area.Width = IIf(.Y2.Visible Or Not UserControl.Ambient.UserMode, 0.85, 0.9) * UserControl.ScaleWidth
.Area.Top = 0.1 * UserControl.ScaleHeight
.Area.Height = 0.53 * UserControl.ScaleHeight
If SeriAutoSize Then
.Series.Left = MainChart.Area.Left + 100
.Series.Top = MainChart.Area.Top + 100
End If
.Series.Font.Size = .Series.Font.Size * MyNewZoom / MainChart.Zoom
.Title.Font.Size = .Title.Font.Size * MyNewZoom / MainChart.Zoom
.X.Font.Size = .X.Font.Size * MyNewZoom / MainChart.Zoom
.X.Title.Font.Size = .X.Title.Font.Size * MyNewZoom / MainChart.Zoom
.X.Value.Font.Size = .X.Value.Font.Size * MyNewZoom / MainChart.Zoom
.Y1.Font.Size = .Y1.Font.Size * MyNewZoom / MainChart.Zoom
.Y1.Title.Font.Size = .Y1.Title.Font.Size * MyNewZoom / MainChart.Zoom
.Y2.Font.Size = .Y2.Font.Size * MyNewZoom / MainChart.Zoom
.Y2.Title.Font.Size = .Y2.Title.Font.Size * MyNewZoom / MainChart.Zoom
End With
MainChart.Zoom = MyNewZoom
End Sub
Mbt925
یک شنبه 06 مرداد 1387, 01:06 صبح
فکر نکنم راه حل مشکل سخت باشه!
یه تابع برای کنترل تون تعریف کنید که آرگومان های متد Scale رو بگیره.
در این متد، آرگومان ها رو به متد Scale مربوط به کنترل تون پاس کنید.
فاطمه وطن دوست
یک شنبه 06 مرداد 1387, 14:01 عصر
فکر نکنم راه حل مشکل سخت باشه!
یه تابع برای کنترل تون تعریف کنید که آرگومان های متد Scale رو بگیره.
در این متد، آرگومان ها رو به متد Scale مربوط به کنترل تون پاس کنید.
سلام
منظورتون اینه که برای یوزرکنترل خصوصیات scaletopscaleleft,scalewidht,scaleheight
تعریف کنم(برنامه نویسی) و بعد از طریق یه تابع این خصوصیات رو مقدار دهی کنم ؟
این کارو انجام دادم ولی نتیجه نگرفتم.
اگرم اشتباه متوجه شدم بیشتر توضیح بدین.
Mbt925
یک شنبه 06 مرداد 1387, 14:51 عصر
Public Sub ScaleX(ByVal TopLeftX As Integer, TopLeftY As Integer, _
ByVal BottomRightX As Integer, ByVal BottomRightY As Integer)
UserControl.Scale (TopLeftX, TopLeftY)-(BottomRightX, BottomRightY)
End Sub
فاطمه وطن دوست
دوشنبه 07 مرداد 1387, 13:40 عصر
سلام
وقتی به صورت دستی یوزر کنترل رو به فرم اضافه میکنی مشکلی نیست ولی وقتی از طریق کد یوزر کنترل رو اضافه میکنی مشکل بوجود میاد. (pic2)
اینم یه نمونه ولی یوزر کنترل در این نمونه یوزر کنترل رو به صورت دستی تو برنامه استفاده شده (طراحی)
₪در ضمن ، یوزرکنترل خاصیت Scale ، برای مقدار دهی نداشت ، ( شایدم من نتونستم ) به همین دلیل ، خصوصیات
ScaleWidth , ScaleHeight, ScaleTop ,ScaleLef به یوزر کنترل اضافه کردم. (کدنویسی)
₪ به اعدادی که در قسمت عنوان پنجره ها هست نگاه کنید .
Mbt925
دوشنبه 07 مرداد 1387, 16:54 عصر
خصوصیت Scale داره، خاصیت AutoRedraw را False کنید.
فاطمه وطن دوست
سه شنبه 08 مرداد 1387, 12:11 عصر
سلام
من بازم جواب نگرفتم. شاید دارم اشتباه میکنم و متوجه نیستم .
اگه نمونه بزارید ممنون میشم.
فاطمه وطن دوست
سه شنبه 08 مرداد 1387, 14:13 عصر
دوستان شما هم یه تستی میکنید ؟
بعدا این پستو پاک میکنم .
__H2__
سه شنبه 08 مرداد 1387, 21:59 عصر
سلام
متاسفانه من هم با وجود دیدن تاپیکهای دیگرتان، چندان متوجه ذات مشکل شما نشدم. یعنی من درست نمیتوانم منظورتان را درک کنم و تا زمانی که عدم درک مشکل وجود داشته باشد، ارائه راه حل چندان منطقی نیست.
ولی در هر صورت یک نمونه کد ساده برایتان حاضر کردم که البته چیزی بیش از راهنمایی های دوستان دیگر ندارد، ولی امیدوارم کمکتان کند.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.