그래프 응용 프로그램을 작성하고 그래프를 표시합니다. 응용 프로그램이 시작되면 지정된 위치에서 자동으로 원시 데이터를 읽고이를 자동으로 그래프로 표시합니다. 그래프가 화면에 표시된 후에 파일에 자동 저장하는 기능을 추가했습니다.양식을 화면에 표시 한 후 N 초 동안 조치를 수행하는 코드를 프로그래밍하는 방법?
Bitmap memoryImage = new Bitmap(picCube.Size.Width, picCube.Size.Height);
Graphics g = Graphics.FromImage(memoryImage);
Point plotLoc = picBox.PointToScreen(Point.Empty);
g.CopyFromScreen(plotLoc.X, plotLoc.Y, 0, 0, picBox.Size);
memoryImage.Save(savePath, ImageFormat.Jpeg);
대한 제한은 그래프가 이미 화면에 표시 한 후이 방법은 작동합니다 :
방법 내가 저장을하고 있어요는 비트 맵으로 화면의 픽셀을 잡아 비트 맵을 저장하는 것입니다. 저장을 수행 할 메뉴 항목이 있는데 메뉴에 도달하기 위해 응용 프로그램이 이미 화면에 표시되었으므로 문제없이 작동합니다. 이제 자동 저장 기능을 추가 했으므로 화면에 양식이 완전히 표시된 후에 만 저장 작업을 트리거 할 수 있어야합니다.
현재 저장 작업을 트리거하는 N 초 후에 꺼지는 폼의 Load 이벤트에 타이머를 넣고 있습니다. 타이머가 GUI 스레드와 다른 스레드에 있기 때문에 어떤 이유로 타이머 스레드가 GUI 요소에 액세스 할 수 없다는 것을 의미하므로 아마 작동하지 않습니다.
배경 작업자와 같이 지나치게 복잡한 접근 방법을 사용하지 않고이 간단한 작업을 수행하는 더 좋은 방법이 있습니까?
'await Task.Delay()' – SLaks
더 좋은 방법은 스크린 샷을 찍는 대신 이미지 파일을 저장하도록 차트 개체를 가져 오는 것입니다! –
어떤 타이머? UI 스레드에서 UI 타이머 개체 (도구에서 드래그 할 수 있음)가 UI 스레드에서 실행되고 작동해야 함 – Alan