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

我是将一张大的BMP图像分割为4份,左上角图像,右上角图像,左下角图像,右下角图像,这四个图像是有不同的id号,并且有个list<int>记录id,id表示的是这张图片在... 我是将一张大的BMP图像分割为4份,左上角图像,右上角图像,左下角图像,右下角图像,这四个图像是有不同的id号,并且有个list<int>记录id ,id表示的是这张图片在那个panel显示,
比如:list中为,2,3,4,5,那么BMP的四个部分分别显示在panel2,panel3,panel4,panel5中,

我的思路是这样的:
我现在有个panel_control包裹着这个所有的需要用来显示图片的 pannel
Control.ControlCollection c= this.panel_control.Controls;//获取panel_control中的集合
for (int i = 0; i <4; i++)
{
foreach (Control item in c)//在panel集合中查找
{
try {
Panel p = (Panel)item;
if (p.Name.Equals("panel" + (listInt[i] + 1).ToString()))如果panel的名字id和list中一样
{
Graphics g = p.CreateGraphics();
g.DrawImage(bit, new Rectangle(0, 0, p.Width, p.Height), new Rectangle(bit.Width / 2 * (i % 2), bit.Height / 2 * (i / 2), bit.Width / 2, bit.Height / 2), GraphicsUnit.Pixel);//将bitmap中对应的1/4给绘制出来
g.Dispose();
break;
}
}catch(Exception ex)
{
Console.WriteLine(ex.ToString());
}

}
}
这样的思路对吗?
为什么绘制结果有问题
展开
 我来答
505744817
2014-04-08 · TA获得超过111个赞
知道小有建树答主
回答量:398
采纳率:0%
帮助的人:126万
展开全部
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
所以要看好你添加控件的顺序
阳光的雷咩咩
2014-04-08 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7798万
展开全部

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

e.Graphics.DrawString(i.ToString(), new Font("宋体", 30), Brushes.Red, 10, 10);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-04-08
展开全部
绘制出来的结果有什么问题?
追问
比如说现在的四张图分别是1,2,3,4号panel对应的
绘制结果就成了2,3,4,1,顺序不对
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式