Я использую Visual Studio C# Снимок экрана для печати и / или также сохранения в формате PDF.
У меня возникла проблема с изображением, после захвата которого отображаются нежелательные белые пиксели.
Пожалуйста, см. Следующее изображение:
kotrv01whitepixels
Не имеет значения, если я сделаю снимок экрана, тогда go для печати или захвата экрана и go для сохранения в формате PDF. Если я снимаю экран вручную через Windows, у меня нет проблем. Я не знаю, что не так с кодом, поэтому я пытаюсь выяснить, может ли кто-нибудь понять, что не так.
Спасибо, код указан ниже:
private void Printbutton_Click(object sender, EventArgs e)
{
//Hide Buttons When Start Print
quitbutton.Visible = false;
printbutton.Visible = false;
savetopdfbutton.Visible = false;
uploadcharacterportraitbutton.Visible = false;
hitsbutton.Visible = false;
submittoserverbutton.Visible = false;
//print button
Graphics g = this.CreateGraphics();
bmp = new Bitmap(this.Size.Width, this.Size.Height, g);
Graphics mg = Graphics.FromImage(bmp);
mg.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, this.Size);
printPreviewDialog1.ShowDialog();
//Show Buttons After Print
quitbutton.Visible = true;
printbutton.Visible = true;
savetopdfbutton.Visible = true;
uploadcharacterportraitbutton.Visible = true;
hitsbutton.Visible = true;
submittoserverbutton.Visible = true;
}
private void Savetopdfbutton_Click(object sender, EventArgs e)
{
//savetoPDF Button
//Hide Buttons When Start Capture
quitbutton.Visible = false;
printbutton.Visible = false;
savetopdfbutton.Visible = false;
uploadcharacterportraitbutton.Visible = false;
hitsbutton.Visible = false;
submittoserverbutton.Visible = false;
// Call your captureScreen() function
captureScreen();
// Create new pdf document and page
PdfDocument doc = new PdfDocument();
PdfPage oPage = new PdfPage();
// Add the page to the pdf document and add the captured image to it
doc.Pages.Add(oPage);
XGraphics xgr = XGraphics.FromPdfPage(oPage);
XImage img = XImage.FromFile(@"C:\Temp\test.png");
xgr.DrawImage(img, 0, 0);
saveFileDialog1.Filter = ("PDF File|*.pdf");
DialogResult btnSave = saveFileDialog1.ShowDialog();
if (btnSave.Equals(DialogResult.OK))
{
doc.Save(saveFileDialog1.FileName);
doc.Close();
}
// I used the Dispose() function to be able to
// save the same form again, in case some values have changed.
// When I didn't use the function, a GDI+ error occurred.
img.Dispose();
//Show Buttons After Screen Capture Finished
quitbutton.Visible = true;
printbutton.Visible = true;
savetopdfbutton.Visible = true;
uploadcharacterportraitbutton.Visible = true;
hitsbutton.Visible = true;
submittoserverbutton.Visible = true;
}
I Необходимо уточнить, что это не похоже на аналогичную проблему при сравнении с нежелательными белыми пикселями на основе свойства TransparencyKey, хотя я предоставил ссылку для справки:
C# появляются белые или черные нежелательные пиксели на изображении
Пожалуйста, дайте мне знать, что я делаю не так. Я перепробовал все на этом этапе, я собираюсь перейти к другим возможным решениям.
ОБНОВЛЕНИЕ 21.03.2020: @Kyle Wang
Я попытался использовать этот код и сделал некоторые изменения. Я все еще получил те же результаты со следующим:
//print button
bmp = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height); Graphics g = Graphics.FromImage(bmp); g.CopyFromScreen(new Point(this.Location.X + 1, this.Location.Y + (this.Height - this.ClientRectangle.Height) + 1), new Point(0, 0), bmp.Size);