目前,我會自動打開一個新表單,加載圖表,僅在 RAM 中截屏,然后通過電報發送到我的私人聊天室。到目前為止一切都很好,但是有沒有辦法以靜默方式打開表單(也未顯示且不聚焦/不可見)并截取靜默表單?
這是我的 atm 代碼,作業正常,但沒有靜默功能。任何人都可以幫助我嗎?
_f2 = new Form2();
_f2.Show();
while(true)
{
if(Form2Closed == true)
{
Form2Closed = false;
break;
}
await Task.Delay(1000);
}
// loading chart stuff
var frm = Form2.ActiveForm;
using (MemoryStream stream = new MemoryStream())
{
using (var bmp = new Bitmap(frm.Width, frm.Height))
{
frm.DrawToBitmap(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height));
bmp.Save(stream, ImageFormat.Png);// "screenshot.png");
stream.Seek(0, SeekOrigin.Begin);
bmp.Dispose();
// sending stuff
}
}
uj5u.com熱心網友回復:
Opacity
您可以通過將其屬性設定為 0來使表單不可見:
var frm = new Form2();
frm.ShowInTaskbar = false;
frm.Opacity = 0;
frm.Show();
using (var bmp = new Bitmap(frm.Width, frm.Height))
{
frm.DrawToBitmap(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height));
// Do something with the bitmap.
}
DrawToBitmap
即使表單被隱藏,該方法也應該可以正常作業。
frm.Hide()
請注意,如果您在顯示表單后立即呼叫(或) ,它也會起作用,frm.Visible = false;
但這會導致表單出現一瞬間。在呼叫之前設定Opacity
為 0可確保表單從一開始就不可見。或者,您可以按照此處的說明進行覆寫。Show()
SetVisibleCore()
uj5u.com熱心網友回復:
檢查此執行緒: 如何截取 WPF 控制元件的螢屏截圖?
RenderTargetBitmap.Render
應該適用于最小化的視窗:)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/525630.html
標籤:C#