这两天没事做了个Silverlight鼠标绘图的小程序,程序截图如下
点击左边的图形选项按钮,可以画出不同的图形。
代码如下
首先需要在界面上放一个Canvas
<Canvas x:Name="View" Background="AliceBlue" MouseLeftButtonDown="View_MouseLeftButtonDown" MouseLeftButtonUp="View_MouseLeftButtonUp" MouseMove="View_MouseMove"/>
后台代码
私有变量
bool isMove = false;//记录是否移动
Point startPoint;//记录鼠标移动的起始点
Polygon py;//图形类型
PointCollection pcTriangle; //记录图形需要的点
按下鼠标,记录鼠标的起始点,初始化多边形,并添加到canvas中,并且图形获取焦点
FrameworkElement element = sender as FrameworkElement;
element.CaptureMouse();
py = new Polygon()
{
Fill=new SolidColorBrush(Colors.Red),
Name=Guid.NewGuid().ToString()
};
startPoint = e.GetPosition(View);移动鼠标,分别向点集合中添加画直角三角形需要三个点
pcTriangle = new PointCollection();
pcTriangle.Add(startPoint);
py.Points = pcTriangle;
View.Children.Add(py);
isMove = true;
if (isMove)
{
pcTriangle.Clear();
pcTriangle.Add(e.GetPosition(View));
pcTriangle.Add(new Point(startPoint.X, e.GetPosition(View).Y));
pcTriangle.Add(startPoint);
}
松开鼠标,释放焦点
FrameworkElement element = sender as FrameworkElement;
element.ReleaseMouseCapture();
isMove = false;
其他的简单图形画法和这个一样,可以一次类推。
PS:不过一直找不到画普通三角形的方法,各位大鸟谁知道的话请提示一下。谢谢