110,536
社区成员
发帖
与我相关
我的任务
分享
protected override void OnPaint(PaintEventArgs e)
{
XmlDocument projectD = new XmlDocument();
projectD.Load(@"\Program Files\SmartDeviceProject2\writerXml.xml");//关于十几张图片的路径和位置等信息
XmlNodeList list = projectD.SelectNodes(@"project/languagevector/language[@name='中文简体']/pagevector/page[@name='page_menu']/objectvector/object");
e.Graphics.FillRectangle(new SolidBrush(Color.Black), 0, 0, 800, 480);//窗体背景为黑色
foreach (XmlNode node in list)
{
string path = null; //图片路径
string pos = node.Attributes["pos"].InnerXml; //图片大小和位置
try
{
path = node.ChildNodes[0].Attributes["image"].InnerXml;
}
catch
{
path = node.Attributes["name"].InnerXml;
}
RGDI.SetCanvas(new Bitmap(@"\Resources\" + path), new Point(int.Parse(pos.Split(',')[0]), int.Parse(pos.Split(',')[1])));//在内存创建画布并画图
}
RGDI.Draw(e.Graphics);//把在内存画的图画在窗体上
}
class RGDI
{
private static Image Canvas = new Bitmap(800, 480);
/// <summary>
/// 把画布画在窗体上
/// </summary>
/// <param name="g"></param>
public static void Draw(Graphics g)
{
Bitmap bm = new Bitmap(Canvas);
g.DrawImage(bm, 0, 0);
}
/// <summary>
/// 创建画布
/// </summary>
/// <param name="image"></param>
/// <param name="point"></param>
/// <returns></returns>
public static Image SetCanvas(Image image, Point point)
{
Bitmap bt = new Bitmap(Canvas);
Graphics gs = Graphics.FromImage(bt);
gs.DrawImage(image,point.X, point.Y);
gs.Dispose();
Canvas = bt;
return bt;
}
/// <summary>
/// 创建新空白画布
/// </summary>
public static void SetNewCanvas()
{
Canvas.Dispose();
Canvas = new Bitmap(800, 480);
}
}