У меня есть код, который открывает окно с помощью службы в моем приложении WPF C #.Я хочу создать файл изображения экрана печати этого окна после его открытия.Проблема состоит в том, что мой код создает файл изображения, у которого есть экран печати области ДО того, как окно фактически открыто.Я попытался создать делегат для события ViewOpened, чтобы он дождался фактического открытия окна, прежде чем я сгенерирую экран печати.Но я все еще получаю изображение области ДО того, как откроется окно.Как я могу это исправить?
Вот мой код:
private void M_printScreenButton_Click(object sender, EventArgs e)
{
var allViews = SystemConfigurationComponent.GetAllViews();
foreach (var view in allViews)
{
// TODO: Add condition to select which views to process. Maybe add a boolean field to View table.
if (string.Equals(view.Uri, @"gtcs\gcs\mmc_userpreferences", StringComparison.InvariantCultureIgnoreCase))
{
ViewsIntegrationService.OpenMimic(view.Uri, "", "", 2, ThisMimic.Context, null);
ViewsIntegrationService.ViewOpened += delegate
{
using (Bitmap bitmap = new Bitmap(view.DefaultWidth, view.DefaultHeight))
{
using (Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(new Point(view.DefaultLeft, view.DefaultTop), Point.Empty,
new Size() {Width = view.DefaultWidth, Height = view.DefaultHeight});
}
bitmap.Save(@"C:\\temp\\GTCS_PrintScreens\\test.jpg", ImageFormat.Jpeg);
//bitmap.Save(view.WindowTitle.Replace(" ", string.Empty).Replace("'", string.Empty) + ".jpg", ImageFormat.Jpeg);
}
//ViewsIntegrationService.CloseView(new AlstomGuiMimicImpl(m_mimicsManager, ThisMimic));
};
}
}
}