写了一个图片处理程序,需要在图片上加许多点,这些点从xml读取的,事先不知道有多少个,因此只能动态加载,可以顺利加载,但是不会为这些控件添加事件了 ,我的代码如下: private void DrawlineByXml()
{
// StringBuilder builder = new StringBuilder();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("../../AreaLine.xml");
XmlNode AreaList = xmlDoc.SelectSingleNode("AreaList");//查找根节点
XmlNodeList xnl = AreaList.ChildNodes;
foreach (XmlNode xnf in xnl)
{
//每个区域的信息
XmlElement xe = (XmlElement)xnf;
string name = xe.GetAttribute("区域名称");
string color = xe.GetAttribute("区域颜色");
// string area = xe.GetAttribute("");
XmlNodeList xnf1 = xe.ChildNodes;
Point myPoint = new Point();
drawArc.Clear();
foreach (XmlNode xn2 in xnf1)
{
string point = xn2.InnerText;//该区域的坐标点
int index = point.IndexOf(",");
myPoint.X = Convert.ToDouble(point.Substring(0, index));
myPoint.Y = Convert.ToDouble(point.Substring(index+1, point.Length-index-1));
drawArc.Add(myPoint);
}
itDrawArc.Add(drawArc);
}//****************************************
//*****************************************
private void DrawPolygon()
{
int i = 1;
// enum:Color{};
PointCollection points=new PointCollection();
DrawlineByXml();
foreach (ArrayList arr in itDrawArc)
{
ArrayList draw = arr;
foreach(Point point in arr)
{
points.Add(point);
}
polygon = new Polygon();
SolidColorBrush brush = new SolidColorBrush();
brush = chooseColor(i);
i++;
polygon.Stroke = brush;
polygon.Fill = brush;
polygon.Opacity = 0.3;
polygon.Points = points;
// polygon.MouseMove += new MouseEventHandler(polygon_MouseMove);
// polygon.MouseLeave += new MouseEventHandler(polygon_MouseLeave);
// polygon.MouseLeftButtonDown += new MouseButtonEventHandler(polygon_MouseLeftButtonDown);
// polygon.MouseMove+=new MouseEventHandler(polygon_MouseMove);
// MapCanvas.Children.Add(polygon);
recArea.Add(polygon);
}
foreach (Polygon myPoly in recArea)
{
myPoly.MouseMove += new MouseEventHandler(myPoly_MouseMove);
myPoly.MouseLeave += new MouseEventHandler(myPoly_MouseLeave);
myPoly.MouseLeftButtonDown += new MouseButtonEventHandler(myPoly_MouseLeftButtonDown);
MapCanvas.Children.Add(myPoly);
} }
{
// StringBuilder builder = new StringBuilder();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("../../AreaLine.xml");
XmlNode AreaList = xmlDoc.SelectSingleNode("AreaList");//查找根节点
XmlNodeList xnl = AreaList.ChildNodes;
foreach (XmlNode xnf in xnl)
{
//每个区域的信息
XmlElement xe = (XmlElement)xnf;
string name = xe.GetAttribute("区域名称");
string color = xe.GetAttribute("区域颜色");
// string area = xe.GetAttribute("");
XmlNodeList xnf1 = xe.ChildNodes;
Point myPoint = new Point();
drawArc.Clear();
foreach (XmlNode xn2 in xnf1)
{
string point = xn2.InnerText;//该区域的坐标点
int index = point.IndexOf(",");
myPoint.X = Convert.ToDouble(point.Substring(0, index));
myPoint.Y = Convert.ToDouble(point.Substring(index+1, point.Length-index-1));
drawArc.Add(myPoint);
}
itDrawArc.Add(drawArc);
}//****************************************
//*****************************************
private void DrawPolygon()
{
int i = 1;
// enum:Color{};
PointCollection points=new PointCollection();
DrawlineByXml();
foreach (ArrayList arr in itDrawArc)
{
ArrayList draw = arr;
foreach(Point point in arr)
{
points.Add(point);
}
polygon = new Polygon();
SolidColorBrush brush = new SolidColorBrush();
brush = chooseColor(i);
i++;
polygon.Stroke = brush;
polygon.Fill = brush;
polygon.Opacity = 0.3;
polygon.Points = points;
// polygon.MouseMove += new MouseEventHandler(polygon_MouseMove);
// polygon.MouseLeave += new MouseEventHandler(polygon_MouseLeave);
// polygon.MouseLeftButtonDown += new MouseButtonEventHandler(polygon_MouseLeftButtonDown);
// polygon.MouseMove+=new MouseEventHandler(polygon_MouseMove);
// MapCanvas.Children.Add(polygon);
recArea.Add(polygon);
}
foreach (Polygon myPoly in recArea)
{
myPoly.MouseMove += new MouseEventHandler(myPoly_MouseMove);
myPoly.MouseLeave += new MouseEventHandler(myPoly_MouseLeave);
myPoly.MouseLeftButtonDown += new MouseButtonEventHandler(myPoly_MouseLeftButtonDown);
MapCanvas.Children.Add(myPoly);
} }
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货