So drucken Sie eine Bildschirmaufnahme in wpf
unächst spreche ich nicht fließend Englisch. Wie auch immer. Ich versuche das zu tun. Allerdings dauert es nicht den dritten Tag. Ich mache jetzt das Programm Siebdruck nach der Bildschirmaufnahme. Ich beziehe mich auf diesen Code.https: //social.msdn.microsoft.com/Forums/windows/en-US/0623964c-4bb4-44c0-a1cb-4dbb2fa161f0/need-simple-c-code-to-print-a-screen-capture? forum = winforms
aber dies nur für winform. Ich habe versucht das gleiche von wpf damit zu versuchen. Ich möchte die Seite automatisch anpassen. Hier ist mein Code
Bitmap bmpScreenshot;
void bt1_MouseDown(object sender, MouseButtonEventArgs e)
{
var cv = sender as Canvas;
var btName = cv.Name;
if (btName.Contains("8"))
{
MakeScreenshot();
PrintDialog printDlg = new System.Windows.Controls.PrintDialog();
System.Drawing.Printing.PrintDocument pd = new System.Drawing.Printing.PrintDocument();
pd.DefaultPageSettings.Landscape = true;
pd.PrintPage += printPage;
if (printDlg.ShowDialog() == true)
{
pd.Print();
}
}
}
public System.Windows.Point Location
{
get
{
return new System.Windows.Point(Left, Top);
}
set
{
Left = value.X;
Top = value.Y;
}
}
public void MakeScreenshot()
{
Graphics g = Graphics.FromHwnd(new System.Windows.Interop.WindowInteropHelper(this).Handle);
FrameworkElement pnlClient = this.Content as FrameworkElement;
double dWidth = -1;
double dHeight = -1;
if (pnlClient != null)
{
dWidth = pnlClient.ActualWidth;
dHeight = pnlClient.ActualHeight;
}
var desktop = System.Windows.SystemParameters.WorkArea;
this.Left = desktop.Right - this.Width;
this.Top = desktop.Bottom - this.Height;
bmpScreenshot = new Bitmap((int)dWidth, (int)dHeight, g);
var memoryGrphics = Graphics.FromImage(bmpScreenshot);
memoryGrphics.CopyFromScreen((int)this.Location.X, (int)this.Location.Y, 0, 0, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Size);
}
bmpScreenshot.Save("Screenshot.png", System.Drawing.Imaging.ImageFormat.Png);
}
private void printPage(object sender,System.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.DrawImage(bmpScreenshot, 0, 0);
}