读写xml
读的时候用到的方法,属性等
先声明对象
XmlTextReader reader reader = new XmlTextReader("BlockSet.xml");
read()这个读取的时候是一条一条的读,如果要找的一个节点在最后的话,它也要循环好多次才可以
读到。还有个是按照path查找读的,记不得了。
XmlTextReader.nodetype 获取当前节点的类型。返回的是XmlNodeType 枚举的 一个值
如果是元素(<item>) 则返回Element 这个(id='123')。返回Attribute 属性 ,对于简单的xml
可以应付了
XmlTextReader.name 这个主要返回节点的名字,它不关是什么都要返回的 就是说它一个一个的返回
<>中的值
ReadElementString()读取里面的字符串了 ,如果没有就返回""的字符串
写xml
XmlDocument doc = new XmlDocument();
doc.LoadXml("<BlackSet></BlackSet>");从指定的字符串加载 XML 文档。就是根节点了
XmlNode root = doc.SelectSingleNode("BlackSet");//选择匹配 XPath 表达式的第一
个 XmlNode。 后面的哪个是要查找的节点,这个就不用我们写循环了对应上面的xmltextreader 有个
XmlReader.ReadToFollowing 方法 (String) 可惜返回的是bool型的
for (int i = 0; i < info.Length; i++)
{
XmlElement xmlType = doc.CreateElement("Type");//创建一个节点
XmlElement xmlId = doc.CreateElement("ID");
xmlId.InnerText = ((BlockInfo)info[i]).GetIdStr();//innertext对应节点的值
xmlType.AppendChild(xmlId);//把这个节点加到type节点下
XmlElement xmlColor = doc.CreateElement("Color");//继续创建
xmlColor.InnerText = ((BlockInfo)info[i]).GetColorStr();
xmlType.AppendChild(xmlColor);//继续添加到TYPE节点下
root.AppendChild(xmlType);把type节点添加到跟节点下
doc.Save("BlockSet.xml");//最后保存下 ,ok
}
写的时候要注意嵌套关系,和xml代码一样要严格遵循嵌套
Form.KeyPreview 属性 要设置成true 否则 不会响应键盘事件
Color.IsEmpty 属性 如果未初始化此颜色,则该属性返回 true;否则将返回 false。 true的话就
是下面没有砖头,既是可以下降 这里出问题了 千万不要把!没了 coorArr[xPos + runBlock[i].X,
yPos - runBlock[i].Y].IsEmpty
XmlTextReader.Name 属性获取当前节点的限定名。
XmlReader.ReadElementString 方法 ()
这是一个用于读取简单纯文本元素的 Helper 方法。它调用 MoveToContent 以查找下一个内容节点,然后将其值作为简单字符串进行分析。
this.TopMost = true; 用于调式有绘画事件的一种方法
Color. Empty 表示值为 空引用(在 Visual Basic 中为 Nothing) 的颜色
Graphics.FromHwnd(pb_Run.Handle) 把指定句柄指定为画板
快速下和直接到底的话索引会超出范围 少写了一个(减少1)检查了N久
定时器没反映,砖头不会向下运动 这个因为没有响应键盘事件timerBlock.AutoReset = true;//这个注意,真的话就每隔一定时间引发事件
消除一格后下降的飞块的阴影没有消除?? 开始以为是重画的时候指定的区域与实际的被掩盖的区域不符号,只画了它能够重画的区域既Graphics.ClipBounds指定的地方
Graphics.ClipBounds 属性 获取一个 RectangleF 结构,该结构限定此 Graphics 的剪辑区域。
后来才找到真正的原因,原来是颜色自己在作怪了。如果设置背景颜色不是黑色的话,它用背景颜色在搽除方块的颜色的时候就会出问题的,它只是用刷子填充要被搽除的地方,这样的话就出问题了,2种颜色混合起来就可能得到不是我们在设置的背景色了,同理,如果缩小的时候和掩盖一部分的时候也是这样的原因
BUG 当一个方块有下到底的时候 这个时候一直按快速下降键就没有反映