ورود

View Full Version : نوشتن متن با طول متغییر وسط فرم با توابع گرافیکی



habedijoo
یک شنبه 20 آذر 1384, 10:41 صبح
سلام به همگی

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

برای نوشتن در فرم از رویداد Paint استفاده کردم . ولی نمی دانم چه کدی را بنویسم که هر رشته با طول متغییر را دقیقا وسط فرم بنویسه .




Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim a As New Font("Davat", 15, FontStyle.Regular, GraphicsUnit.Point)

e.Graphics.DrawString(String, a, Brushes.Black, 120, 80)
End Sub

(120,80) محل نوشتن متن است .
این فرمول هم جواب نداد . (2/ طول کلمه - طول فرم )

حامد مصافی
یک شنبه 20 آذر 1384, 13:24 عصر
سلام
کد زیر رو جایگزین کد قبلیت بکن


Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
Dim s As String
Dim p, tp As PointF
s = "This is a sample text."
tp = e.Graphics.MeasureString(s, Me.Font).ToPointF()

p.X = (ClientSize.Width - tp.X) / 2
p.Y = (ClientSize.Height - tp.Y) / 2

e.Graphics.DrawString(s, Me.Font, New SolidBrush(Color.Black), p)
End Sub

habedijoo
یک شنبه 20 آذر 1384, 15:41 عصر
جناب BlackDal سلام

آقا دستت درد نکنه . کارم راه افتاد . یه حدس زده بودم به خاطر اختلاف در نوع طول متن با طول فرم باشه ( پیکسل با پوینت ) ولی راهش رو نمی دونستم . دستت درد نکنه .

فقط میشه یه کمی درباره این PointF توضیح بدی .

در ضمن برای وبلاگت هم بگم که این خیلی عالیه . توی اکثر وبلاگ ها ،دات نت یه بخش کمی رو به خودش اختصاص می ده . اینکه یه وبلاگ تخصصی دات نت 2005 باشه عالیه . اگر کمک خواستی ما هم هستم .

حامد مصافی
دوشنبه 21 آذر 1384, 01:00 صبح
سلام

خواهش می کنم

در مورد PontF باید عرض کنم از این شی (کلاس) برای نگهداری متغیر هایی از نوع محل استفاده می شود (با استفاده از دو خصوصیت x و y آن)
در این مثال من طول و عرض متن مورد نظرم رو به کمک تابع MeasureString به دست آوردم و با استفاده از متد ToPointF آن را تبدیل به داده ای از این نوع کردم


در مورد وبلاگ هم شما لطف دارید ولی من وقت نمی کنم چیزی بنویسم و آپلود کنم ولی به زودی امیدوارم وبلاگ پرباری بشه
در مورد کمک هم عرض شود من منتظرم:چشمک:

habedijoo
دوشنبه 21 آذر 1384, 16:33 عصر
جناب BlackDal سلام

یه سوال کرافیکیه دیگه هم دارم اگر جواب بدهید ممنون میشم .

من می خواهم وقتی موس روی یه قسمت از فرم که حرکت می کنه یه رویداد رو اجرا کنم . این قسمت از فرم یه شکل غیر منتظم دارد . مثلا یه لوزی یا یک شکل چند وجهی دیگر .
اگر منطقه مورد نظر من مستطیل بود می توانستم یه کنترل بزارم و روی ءMouse Move آن این کار رو انجام بدیم .

ولی شکل مورد نظر من غیر متجانس هست . برای این مورد چه راهنمایی می توانید بکنید .

ممنونم

حامد مصافی
یک شنبه 27 آذر 1384, 02:00 صبح
سلام
ببخشید دوست عزیز من چند روزی نبودم
ممکنه بفرمایید این منطقه مذکور چطوری تعریف شده؟؟؟
منظورم اینه که آیا این منطقه روی یک تصویره که یک رنگ متمایز داره یا اینکه مشخصات اون به صورت اعداد در دسترسند
؟؟؟

habedijoo
یک شنبه 27 آذر 1384, 11:16 صبح
جناب BlackDal سلام
در تصویر زیر مشخص شده .
ببینید . این تصویر بصورت Transparent نمایش داده میشود . من میخوام هر وقت موس رو نقطه مشخص شده بیاد یه اتفاقی بیافته .

نظر شما چیه .
با تشکر

علی کلاهدوزان
یک شنبه 27 آذر 1384, 18:07 عصر
بخدا نمی خوام تبلیغ کنم یک ریال هم توی جیب من نمی ره خدا شاهده . یک سی دی آموزشی برای یک شرکت ساختم دادم بهشون رفت دیگه هم کاری بمن نداره ولی از سیر تا پیاز vb.net توش هست . اگه خواستید بگید تا بگم از کجا تهیش کنید . اگه هم دیگه سوالی داشتید و سی دی نخواستید بگید تا همین جا جوابتون رو بدم .

habedijoo
دوشنبه 28 آذر 1384, 08:55 صبح
دوست عزیز علی کلاهدوزان

اول : خواهش میکنم یه نگاه به جوابتون بیندازید ببینید سنخیتی با تاپیک من داره یا نه ؟ .
دوم : اگر میخواهید جواب سوال منو بدید خوب بگید دیگه چرا سوال میکنی ؟
سوم : اینکه کسی بابت زحمتی که کشیده پولی بگیرد ، قابل بحث نیست که شما بخواهید سوگند بخورید . اگر میدانید سی دی خوبی ساخته اید یه تاپیک توی قسمت آگهی ها راه بندازید و تبلیغ کنید . هم به درد برنامه نویسها می خوره و هم می توانی درآمدی از فروشش بدست بیاری . اگر سی دی خوبی باشه خودم اولین خریدارش هستم . و شخصا هم از خودت میگیرم تا سودش به جیب خودت برود نه شرکتهای سود جو .

علی کلاهدوزان
دوشنبه 28 آذر 1384, 10:36 صبح
من نمی تونم اون رو در اختیارتون قرار بدم بر اساس یک قرار داد اون دیگه مال من نیست . کلا بیخیال اگه دیگه سوالی هست من همینجا در خدمتم

مرتضی دولتخواه
سه شنبه 29 آذر 1384, 08:32 صبح
با سلام
شما برای ترسیم این شکل یا از یک کنترل (مثلا Picture ) استفاده کردین یا از توابع گرافیکی .خوب در هر صورت شما می تونید با به دست آوردن مکان جدید موس در هر لحظه اون رو با بازه مکان مورد نظرتون (x1,y1.....x2,y2) چک کنید.

علی کلاهدوزان
سه شنبه 29 آذر 1384, 11:23 صبح
دم آقای دولتخواه گرم جوابش درست درسته می تونی هم برای یک قسمت فرم یک شئی ناپیدا تعریف کنی و براش mousehovever رو تعریف کنی البته به این میگن کلک رشتی

habedijoo
سه شنبه 29 آذر 1384, 13:09 عصر
آقای علی کلاهدوزان ، لطفا اول تاپیک رو کامل بخونید بعد جواب بدید .

علی کلاهدوزان
سه شنبه 29 آذر 1384, 17:01 عصر
این جواب سوال دومتون بود نه اولی