Скрытие развёрнутого пункта menuStrip - C#
Формулировка задачи:
Работаю в Visual studio 2010 в Windows Forms.
http://ib2.keep4u.ru/s/2013/04/23/d4...07d49dd50c.jpg
Вот такая вот картинка. Когда нажимаю на "Сделать скриншот" происходит запись изображенного ниже графика(построенного на SimpleOpenGlControll) в bitmap объект, а потом запись этого объекта в массив. Всё это время, пока происходят вышеуказанные действия не скрывается менюшка открытая пунктом записи, и соответственно, изображение записанное в битмап записывается вместе с попавшимся куском менюшки.
http://ib2.keep4u.ru/s/2013/04/23/76...f0b8dab05a.jpg
Вопрос: Как мне организовать:
1)Либо принудительное закрытие менюшки перед записью обьекта в bitmap;
2)Либо подождать пока менюшка сама закроется и после этого начать запись.
Пробовал:
1) изменять свойство Visible этого элемента на 'False" на время выполнения метода;
2) искать события скрытия менюшки, ненашёл.
Ниже привожу код записи в битмап(на случай если я ничего не понимаю и всё дело в нём):
Очень надеюсь на вашу помощь.
private Bitmap GetBitmap()
{
Gl.glFlush();
Bitmap bitmap = new Bitmap(AnT.Width, AnT.Height);
BitmapData bitmapData = bitmap.LockBits(
new Rectangle(0, 0, bitmap.Width, bitmap.Height),
ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb);
Gl.glReadBuffer(Gl.GL_FRONT);
Gl.glReadPixels(0, 0, bitmap.Width, bitmap.Height,
Gl.GL_BGR_EXT, Gl.GL_UNSIGNED_BYTE, bitmapData.Scan0);
bitmap.UnlockBits(bitmapData);
bitmap.RotateFlip(RotateFlipType.RotateNoneFlipY);
return bitmap;
}
private void SaveOpenGlPole (bool i)
{
string str, str1, str2, str3;
image = GetBitmap();
str1 = "c:\\Изображение № ";
str2 = number_image.ToString();
str3 = ".gif";
str = str1 + str2 + str3;
image_rec[number_image] = image;
image_rec_str[number_str_image] = str;
number_str_image++;
number_image++;
}
private void сделатьСкриншотToolStripMenuItem_Click(object sender, EventArgs e)
{
записьToolStripMenuItem.Visible = false;
SaveOpenGlPole(true);
записьToolStripMenuItem.Visible = true;
}
Архив с программой, на всякий случай, если я непонятно объяснил.
http://rghost.ru/45496022
Решение задачи: «Скрытие развёрнутого пункта menuStrip»
textual
Листинг программы
private void сделатьСкриншотToolStripMenuItem_Click(object sender, EventArgs e)
{
Skrin();
}
private void Skrin()
{ System.Threading.Thread.Sleep(3000); SaveOpenGlPole(true); }
private void SaveOpenGlPole(bool i)
{
string str, str1, str2, str3;
image = GetBitmap();
str1 = "c:\\Изображение № ";
str2 = number_image.ToString();
str3 = ".gif";
str = str1 + str2 + str3;
image_rec[number_image] = image;
image_rec_str[number_str_image] = str;
number_str_image++;
number_image++;
}
private Bitmap GetBitmap()
{
Gl.glFlush();
Bitmap bitmap = new Bitmap(AnT.Width, AnT.Height);
BitmapData bitmapData = bitmap.LockBits(
new Rectangle(0, 0, bitmap.Width, bitmap.Height),
ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb);
Gl.glReadBuffer(Gl.GL_FRONT);
Gl.glReadPixels(0, 0, bitmap.Width, bitmap.Height,
Gl.GL_BGR_EXT, Gl.GL_UNSIGNED_BYTE, bitmapData.Scan0);
bitmap.UnlockBits(bitmapData);
bitmap.RotateFlip(RotateFlipType.RotateNoneFlipY);
return bitmap;
}