So, I'm trying to make simple screenshot app in Window Forms, but i would like my button to dissapear whenever I take a shot. Unfortunately, it does not want to be invisible, even after setting Visible to false:
{
InitializeComponent();
this.BackColor = Color.Red;
this.TransparencyKey = BackColor;
this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;
}
Image tmp = Image.FromFile("C:/Users/Bartek/source/repos/Hadr/Hadr/Image/image.png");
private void button1_Click_1(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(tmp.Width, tmp.Height);
Graphics g = Graphics.FromImage(bmp);
button1.Visible = false;
g.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size);
pictureBox1.Image = bmp;
bmp.Save("C:/Folder/image1.png",System.Drawing.Imaging.ImageFormat.Png);
}
I have set dock on picturebox to fill, and placed button in the way showed on screen:
I'm kindly asking for help
Hide the button first and then use BeginInvoke() to defer making the screenshot until the system updates controls, like this:
private void button1_Click_1(object sender, EventArgs e)
{
button1.Visible = false;
BeginInvoke(MakeScreenShot);
}
void MakeScreenshot()
{
Bitmap bmp = new Bitmap(tmp.Width, tmp.Height);
Graphics g = Graphics.FromImage(bmp);
g.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size);
pictureBox1.Image = bmp;
bmp.Save("C:/Folder/image1.png", System.Drawing.Imaging.ImageFormat.Png);
button1.Visible = true;
}