程序运行时,窗口无法响应任何操作
bool stop = true;
private void 任意角旋转ToolStripMenuItem_Click(object sender, EventArgs e)
{
Graphics g = panel1.CreateGraphics();
TextureBrush bru = new TextureBrush(m_bitmap);
while (stop)
{
bru.RotateTransform(2);
g.FillRectangle(bru, 0, 0, m_bitmap.Width, m_bitmap.Height);
System.Threading.Thread.Sleep(100);
}
}
就是这段代码,我是想让图片在控件内不停地旋转,结果图片运动的时候整个窗口都没有办法操作,只能通过任务管理器来强制关闭,我试过把它放进另一个线程里,但编译器显示m_bitmap正在被使用,求教该如何处理?
------解决方案--------------------m_bitmap = (Bitmap)Bitmap.FromFile(file.FileName, false);
改成
Image img = Bitmap.FromFile(file.FileName, false);
m_bitmap = new Bitmap(img);
至少在我本地的vs2010里运行正常,楼主可以试下
------解决方案--------------------顺便说下,那个while循环需要放到新线程里去执行
------解决方案-------------------- while (stop)这理造成了 你还是要开一个线程来做要不然会卡死UI线程
{
bru.RotateTransform(2);
g.FillRectangle(bru, 0, 0, m_bitmap.Width, m_bitmap.Height);
System.Threading.Thread.Sleep(100);
}
------解决方案--------------------
异常是因为你没用委托。要调用控件就要用委托。。。
------解决方案--------------------
while (stop)这理造成了 你还是要开一个线程来做要不然会卡死UI线程