Ich möchte eine SS-Anwendung machen. Aber ich habe Probleme mit diesem Thema. Ich möchte, dass der Benutzer in der Lage ist, einen speziellen Bereich für die Bildschirmaufnahme auszuwählen. Ich möchte auch, dass der Desktop aktiv ist, während der Benutzer den Bereich auswählt. Zum Beispiel möchte der Benutzer ein SS eines Video-spezifischen Rahmens nehmen. Der Benutzer muss dazu in der Lage sein, während das Video abgespielt wird. Ich habe dies mit der Zeichnung direkt auf dem Desktop versucht. Aber es flackert so sehr. Wie kann ich das beheben oder gibt es einen alternativen Weg?Wie mache ich einen Screenshot Bereich Auswahl durch Zeichnen auf dem Desktop, um Screenshot zu machen?
Mein Code:
[DllImport("User32.dll")]
static extern IntPtr GetDC(IntPtr hwnd);
[DllImport("user32.dll")]
static extern bool InvalidateRect(IntPtr hWnd, IntPtr lpRect, bool bErase);
public Form1()
{
InitializeComponent();
this.Load += Form1_Load;
}
void Form1_Load(object sender, EventArgs e)
{
Start();
}
IntPtr handle;
Graphics grp;
void Start()
{
handle = GetDC(IntPtr.Zero);
grp = Graphics.FromHdc(handle);
grp.SmoothingMode = SmoothingMode.HighQuality;
timer2.Start();
}
private void timer2_Tick(object sender, EventArgs e)
{
grp.DrawLine(Pens.Red, 0, Cursor.Position.Y, Screen.PrimaryScreen.Bounds.Width, Cursor.Position.Y);
InvalidateRect(IntPtr.Zero, IntPtr.Zero, false);
}
FYI - [Greenshot] (http://getgreenshot.org/) tut es, und es ist frei und Open-Source-.NET-Code. Sie können nur auf ihren Code "spähen". – ja72