PDA

View Full Version : Drag کردن یک دایره



روانشناس
جمعه 04 اسفند 1385, 13:29 عصر
سلام
اگه ما بخوایم یه موجودیتی مثل یه دایره که خودمون رسم کردیمو روی فرم Drag کنیم چطور باید این کارو بکنیم. اگه میشه مثال بنویسید ممنون میشم

ghafoori
جمعه 04 اسفند 1385, 15:08 عصر
دوست عزیز من این راه حل را استفاده کردم ابتدا یک graphic path ایجاد کردم سپس ان را به region تبدیل کردم سپس ان را رسم کردم حالا هر وقت رویه فرم کلیک شد با متد isvisible نقطه را چک می کنم در رپناحیه است یا نه اگر بود برود رویه حالت دراگ و در نهایت دوباره graphic path را ایجاد کرده و رسم می کنم البته من کدی به زبان وی بی نوشتم که جواب میدهد فکر کنم شما یک نگاهی بیندازید کارتون را می افتد اگر نتوانستید بگید تا به سی شارپ تبدیلش کنم


Public Class Form1
Dim p As New Drawing2D.GraphicsPath
Dim r As Region

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
p.AddPie(0, 0, 50, 50, 0, 360)
r = New Region(p)
Me.CreateGraphics.FillRegion(Brushes.Blue, r)
End Sub

Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
If e.Button = Windows.Forms.MouseButtons.Left Then
If r.IsVisible(e.X, e.Y) = True Then
DoDragDrop(r, DragDropEffects.Move)
End If
End If
End Sub

Private Sub Form1_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragDrop
p.ClearMarkers()
p.AddPie(e.X - 50, e.Y - 100, 50, 50, 0, 360)
r = New Region(p)
Me.CreateGraphics.FillRegion(Brushes.Blue, r)
End Sub

Private Sub Form1_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragEnter
e.Effect = DragDropEffects.Move
End Sub
End Class