Chcę utworzyć aplikację SS. Ale mam problem na ten temat. Chcę, aby użytkownik mógł wybrać specjalny obszar do zrobienia zrzutu ekranu. Chcę również, aby pulpit był podświetlany, gdy użytkownik wybiera obszar. Na przykład użytkownik chce wziąć SS z określonej ramki wideo. Użytkownik musi być w stanie to zrobić podczas odtwarzania wideo. Próbowałem tego, używając rysunku bezpośrednio na pulpicie. Ale migocze tak bardzo. Jak mogę to naprawić lub czy istnieje alternatywny sposób?Jak zrobić wybór obszaru ekranu, rysując na pulpicie, aby wykonać zrzut ekranu?
Mój kod:
[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/) robi to i jest darmowy i open source. NET code. Możesz po prostu "zerknąć" na ich kod. – ja72