2015-12-16 3 views
0

Я хочу показать изображение из консольного приложения, и для этого я написал код. Но когда он показывает изображение, он показывает странное поле Form. И если я сохраню изображение и открываю его нормально, он отображает изображение.C# Console- Отображение изображения с помощью формы

Код:

Bitmap bmpScreenCapture = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); 

Graphics g = Graphics.FromImage(bmpScreenCapture); 

g.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, 
    Screen.PrimaryScreen.Bounds.Y, 
    0, 0, 
    bmpScreenCapture.Size, 
    CopyPixelOperation.SourceCopy); 

bmpScreenCapture.Save("potato.png", ImageFormat.Png); 

Form imageForm = new Form(); 
//imageForm.FormBorderStyle = FormBorderStyle.None; 
imageForm.Controls.Add(new PictureBox() { Image = bmpScreenCapture, Visible = true }); 
imageForm.Show(); 
+2

Приложение в режиме консоли - довольно враждебное место для графического интерфейса. Вы, как минимум, должны использовать ShowDialog(). Попытка забеременеть - плохая идея. –

+0

Просто не используйте форму. Вместо этого посмотрите, чтобы открыть изображение. Я думаю, что все, что вам нужно, это 'Process.Start (filename)', чтобы открыть его в приложении по умолчанию. (Если это то, что вы хотели сделать) – TyCobb

+0

Это не дубликат, потому что они не хотят, чтобы он был в форме, которую он хотел бы получить в консоли. –

ответ

0

Это потому, что вы видите форму границы. Вы были на правильном пути с:

imageForm.FormBorderStyle = FormBorderStyle.None; 

Однако вам нужно будет соответствующим образом изменить размер окна. Но вам даже не нужно окно. После вызова

bmpScreenCapture.Save("potato.png", ImageFormat.Png); 

просто сделать System.Diagnostics.Process.Start ("Potato.png"); и он откроет изображение в программе по умолчанию.

+0

Я тестировал его, но изображения нужны только на короткое время. Я также скорректировал размер, но он по-прежнему показал странное окно сообщения. Используемый код: imageForm.Size = bmpScreenCapture.Size; Я также планирую, чтобы изображение постоянно менялось, чтобы он выглядел так, как будто он движется надеемся :) –

0
 Form imageForm = new Form(); 
     imageForm.Text = "Screenshot"; 
     //imageForm.FormBorderStyle = FormBorderStyle.None; 
     imageForm.Size = bmpScreenCapture.Size; 
     imageForm.BackgroundImageLayout = ImageLayout.Zoom; 
     imageForm.BackgroundImage = bmpScreenCapture; 
     imageForm.ShowDialog(); 
Смежные вопросы