나는 타원, 선 및 직사각형을 그리는 간단한 응용 프로그램을 가지고 있습니다.캔버스에있는 마우스 클릭 객체
코드 : 그들이 마우스로 클릭 할 때
private void Canvas_MouseDown(object sender, MouseButtonEventArgs e)
{
startPoint = e.GetPosition(canvas);
if(figura == "linia")
{
linia = new Line
{
Stroke = Brushes.LightBlue,
StrokeThickness = 2
};
canvas.Children.Add(linia);
}
if (figura == "kwadrat")
{
rect = new Rectangle
{
Stroke = Brushes.LightBlue,
StrokeThickness = 2
};
Canvas.SetLeft(rect, startPoint.X);
Canvas.SetTop(rect, startPoint.X);
canvas.Children.Add(rect);
}
else if (figura == "kolko")
{
circ = new Ellipse
{
Stroke = Brushes.LightBlue,
StrokeThickness = 2
};
Canvas.SetLeft(circ, startPoint.X);
Canvas.SetTop(circ, startPoint.X);
canvas.Children.Add(circ);
}
}
private void Canvas_MouseMove(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Released || rect == null && circ == null && linia == null)
return;
var pos = e.GetPosition(canvas);
var x = Math.Min(pos.X, startPoint.X);
var y = Math.Min(pos.Y, startPoint.Y);
var w = Math.Max(pos.X, startPoint.X) - x;
var h = Math.Max(pos.Y, startPoint.Y) - y;
if(figura == "linia")
{
linia.X1 = startPoint.X;
linia.Y1 = startPoint.Y;
linia.X2 = pos.X;
linia.Y2 = pos.Y;
}
if (figura == "kwadrat")
{
rect.Width = w;
rect.Height = h;
Canvas.SetLeft(rect, x);
Canvas.SetTop(rect, y);
}
if (figura == "kolko")
{
circ.Width = w;
circ.Height = h;
Canvas.SetLeft(circ, x);
Canvas.SetTop(circ, y);
}
}
private void Canvas_MouseUp(object sender, MouseButtonEventArgs e)
{
rect = null;
circ = null;
}
지금 내가 크기 조정과 같은 객체 뭔가를하고 싶은 등 이동합니다. 나는 마우스로 클릭 한 객체를 어떻게 찾을 수 있는지 모른다. 너 나 좀 도와 줄 수있어?
혼자서 모든 것을하기 전에. [Thumb] (http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.thumb.aspx) 컨트롤을 사용하면 개체의 크기를 조정하고 이동할 때 완벽하게 작동합니다. 그 외에도 캔버스가 항목에 대해 알아야하는 이유는 무엇입니까? Panel과 ItemsControl이 무엇인지 확인해야합니다. – dowhilefor
읽어보기 : http://msdn.microsoft.com/en-us/library/ms752097.aspx – mlemay