PDA

View Full Version : سوال: رسم شکل



مجتبی کریمی
دوشنبه 07 مرداد 1387, 22:23 عصر
با سلام
من تو یه برنامه لازم دارم که یه سری نقطه بزارم و بعد این نقاط رو با خط به هم وصل کنم.
می خواهم که وقتی پنجره جابجا می شه یا روش یه چیزی می اد و میره شکلش رو مجبور نباشم دوباره بکشم.
من واقعا اینو نیاز دارم لطفا کمک کنید.
ممنون

shamsoft
دوشنبه 07 مرداد 1387, 23:01 عصر
باید Imports System.Drawing.Drawing2D کنی و با DrawPath شکلی رو که می خوای رسم کنی. یه نمونه کد میزارم:


Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim G As Graphics = e.Graphics
Dim Path As New GraphicsPath
Path.StartFigure()
Path.AddLine(20, 20, 80, 20)
Path.AddLine(80, 20, 80, 40)
Path.AddLine(80, 40, 120, 40)
Path.AddLine(120, 40, 120, 80)
Path.AddLine(120, 80, 20, 80)
Path.AddArc(20, 60, 20, 20, 90, 90)
Path.AddLine(20, 80, 20, 20)
Path.CloseFigure()
G.FillPath(Brushes.Black, Path)
End Sub

مجتبی کریمی
دوشنبه 07 مرداد 1387, 23:18 عصر
اگه بخواهم مثل یه object باشه ، یعنی بهش دسترسی داشته باشم ، اون موقه باید چه کار کنم
ممنون

shamsoft
دوشنبه 07 مرداد 1387, 23:29 عصر
منظورتونو نمی فهمم!! یعنی می خواین باهاش چیکار کنید !؟ این خودش یه Object هست دیگه

مجتبی کریمی
دوشنبه 07 مرداد 1387, 23:47 عصر
می خواهم که این چیزی که رسم می کنم تو رویداد Paint نباشه
بتونم وقتی کشیدمش بعدش بتونم رنگشو عوض کنم و یا موقعیتشو عوض کنم

shamsoft
دوشنبه 07 مرداد 1387, 23:53 عصر
خب این شکل به شیء G وابسته هست. هر جوری بخواین می تونید رنگ یا ترسیم کنید. فقط وقتی قصد Draw یا Fill را دارید باید شیء G به یه جایی Reference داشته باشید. خب شما می تونید این کد رو توی یه Sub دیگه بنویسید و هر وقت خواستید اونو فراخوانی کنید. فقط باید G رو به این صورت مقدار دهی کنید: Dim G As Graphics = Me.CreateGraphics

مجتبی کریمی
سه شنبه 08 مرداد 1387, 00:08 صبح
اگه فرم مینیمایز بشه و دوباره ریاستور بشه پاک میشه.
می خام این اتفاق نیفته

shamsoft
سه شنبه 08 مرداد 1387, 00:22 صبح
خب واسه همینه که من کدمو تو رویداد FormPaint گذاشتم دیگه!

مجتبی کریمی
سه شنبه 08 مرداد 1387, 00:34 صبح
راهی نداره که بشه بدون استفاده از رویداد paint این کارو کرد؟
من شکلم خیلی شولوغه
در ضمن می خواهم اگه دو تا خط رو هم می افتند و یکشونو پاک کنی مشکلی پیش نیاد.
ممنون که وقت میگذاری.

shamsoft
سه شنبه 08 مرداد 1387, 01:31 صبح
راهی نداره که بشه بدون استفاده از رویداد paint این کارو کرد؟
این دیگه بستگی به نیاز خودت داره که چیکار کنی. اگر شکلت روی فرم کشیده بشه، هر بار که فرم Paint بشه اون شکل پاک میشه. حالا اگر می تونی شکل رو روی یه عکس ترسیم کن و بزار رو فرم یا هر کار دیگه. میگم که بسته به نیاز خودته!

در ضمن می خواهم اگه دو تا خط رو هم می افتند و یکشونو پاک کنی مشکلی پیش نیاد.
منظورتونو نمی فهمم!! دو تا خط رو هم که باشن، اگر یکیشو پاک کنی اون یکی قاعدتا باید باقی بمونه