MainPage.xaml |
[그림 49-1] <Grid x:Name="LayoutRoot" Background="White"> <Canvas Width="400" Height="300" Background="Silver"> <Image x:Name="imgs" Source="Images/j3.jpg"></Image> </Canvas> </Grid> |
MainPage.xaml.cs |
public partial class MainPage : UserControl { private
bool isMouseDown = false; // 마우스 클릭 중인지 private
Point lastPoint = new
Point();
// 마지막 커서 위치 private
Point offset = new
Point(); // 왼쪽 상단과 개체간의 간격 여백 public
MainPage() { InitializeComponent(); //[1] 마우스 왼쪽버튼 클릭 this.imgs.MouseLeftButtonDown += new MouseButtonEventHandler(imgs_MouseLeftButtonDown); //[2] 마우스 이동 (드래그) this.imgs.MouseMove
+= new MouseEventHandler(imgs_MouseMove); //[3] 마우스 왼쪽버튼 뗄 때 this.imgs.MouseLeftButtonUp += new MouseButtonEventHandler(imgs_MouseLeftButtonUp); } void
imgs_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { isMouseDown = false; //클릭되지 않은 상태 this.imgs.ReleaseMouseCapture(); //캡쳐된 마우스 정보 해제 }
void
imgs_MouseMove(object sender, MouseEventArgs e) { if
(isMouseDown) //마우스가 클릭된 상태에서만 드래그를 해주고자 한다면??? { lastPoint = e.GetPosition(null); //마우스 움직일때의 좌표값 재설정 //TextBlock의 Left와 Top 속성을 재지정 //현재위치-TextBlock의 위치 imgs.SetValue(Canvas.LeftProperty, lastPoint.X - offset.X); imgs.SetValue(Canvas.TopProperty, lastPoint.Y - offset.Y); } } void
imgs_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { isMouseDown = true; //클릭된 상태 this.imgs.CaptureMouse();
//현재 요소에 마우스 클릭시 마우스에 대한 정보를 저장 lastPoint = e.GetPosition(null); //현재 마우스의 위치값을 Point 형태로 반환 //MessageBox.Show(lastPoint.X.ToString()); offset.X = lastPoint.X - Convert.ToDouble(imgs.GetValue(Canvas.LeftProperty)); offset.Y = lastPoint.Y - Convert.ToDouble(imgs.GetValue(Canvas.TopProperty)); } } |
결과화면 |
[그림 49-2] 사진속 주인공 : 배우 조선옥 님 |
'Silverlight' 카테고리의 다른 글
51.SilverLight3 - RoutedEventArgs (0) | 2009.12.01 |
---|---|
50.SilverLight3 - InkPresenter (0) | 2009.12.01 |
48.SilverLight3 - TextBlock (0) | 2009.12.01 |
47.SilverLight3 - PasswordBox (0) | 2009.12.01 |
46.SilverLight3 - TextBox (0) | 2009.12.01 |
Comments