現在画面からボタンを消した後にスクリーンショットを撮影する処理を書いているのですが、撮影されたスクリーンショットを見るとこんな感じで画面が汚くなることが多々あります。
画面を再描画する処理を書いているので、多分再描画中にスクリーンショットを撮ってしまっているんじゃないかと思うのですが......。
コードは以下のようになっています。
C#
1 public async void TappedCompleteButton() 2 { 3 ButtonVisibility = Visibility.Hidden; 4 updateScreen(); 5 6 IsShowIndicator = true; 7 Bitmap guestbookImage = makeCaptureBitmap(); 8 await dataUpload(guestbookImage); 9 IsShowIndicator = false; 10 ButtonVisibility = Visibility.Visible; 11 } 12 13 private Bitmap makeCaptureBitmap() 14 { 15 Bitmap bmp = new Bitmap(1920, 1100); 16 Graphics g = Graphics.FromImage(bmp); 17 g.CopyFromScreen(new System.Drawing.Point(0, 100), new System.Drawing.Point(0, 0), bmp.Size); 18 g.Dispose(); 19 20 return bmp; 21 } 22 23 private void updateScreen() 24 { 25 DispatcherFrame frame = new DispatcherFrame(); 26 var callback = new DispatcherOperationCallback(exitFrames); 27 Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, callback, frame); 28 Dispatcher.PushFrame(frame); 29 } 30 31 private object exitFrames(object obj) 32 { 33 ((DispatcherFrame)obj).Continue = false; 34 return null; 35 }
なぜ再描画の処理を行っているかというと、ボタンのVisibilityをHiddenにしただけではスクリーンショット撮影時にボタンが消えないからです。
どうすればボタンを消して画面の再描画後にスクリーンショットを撮ることができるようになるでしょうか?
どなたかわかる方がいれば教えていただきたいです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー