C#中用Graphics绘制Panel的问题?

发布网友 发布时间:2024-10-21 17:40

我来回答

3个回答

热心网友 时间:2024-11-26 19:40

public void Draimg()
{

Image img = Image.FromFile(@"Img\1.png");
Point[] point ={
new Point(){X=-img.Height/2,Y=-img.Width/2},
new Point(){X=-img.Width/2,Y=0},
new Point(){X=0,Y=-img.Height/2},
new Point(){X=0,Y=0}
};
for (int i = 0; i < panel1.Controls.Count; i++)
{
if(panel1.Controls[i] is Panel)
{
Panel p= panel1.Controls[i] as Panel;
Graphics g = p.CreateGraphics();
//将bitmap中对应的1/4给绘制出来
g.DrawImage(img, point[i]);
}
}

//int i=-1;
//foreach (Control item in panel1.Controls)
//{

// if (item is Panel)
// {
// i++;
// Panel p = item as Panel;
// Graphics g = p.CreateGraphics();
// //将bitmap中对应的1/4给绘制出来
// g.DrawImage(img,point[i]);
// }
// else
// {
// return;
// }
//}
}

原因我已经找到!

Panel控件 里面大概有这么一个集合
panel1.Controls 控件集合
这可能是堆栈的问题
当你在panel1控件添加子控件时
添加顺序为
panel2
panel4
panel5
那么实际读取顺序是
panel5
panel4
panel2
所以要看好你添加控件的顺序

热心网友 时间:2024-11-26 19:45

绘制出来的结果有什么问题?

热心网友 时间:2024-11-26 19:45

个人觉得是g.DrawImage这行有错,为了测试,把这句换成简单地输出字符串看

e.Graphics.DrawString(i.ToString(), new Font("宋体", 30), Brushes.Red, 10, 10);

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com