Задать вопрос
@Aszhar
пишу на остром

Как выполнить на winforms фильтр для чтения, который отрисовывается поверх всех окон на экране?

Я пытаюсь отрисовать данный фильтр при помощи следующего кода
namespace AutoclickerRG
{
    public static class OverlayDrawer
    {
        [DllImport("User32.dll")]
        public static extern IntPtr GetDC(IntPtr hwnd);
        [DllImport("User32.dll")]
        public static extern void ReleaseDC(IntPtr hwnd, IntPtr dc);

        public static void DrawFrame(Frame frame)
        {
            IntPtr desktopPtr = GetDC(IntPtr.Zero);
            Graphics g = Graphics.FromHdc(desktopPtr);

            SolidBrush b = new SolidBrush(Color.FromArgb(50, 255, 50, 10));
            g.FillRectangle(b, new Rectangle(frame.FirstPoint.X, frame.FirstPoint.Y, frame.SecondPoint.X - frame.FirstPoint.X, frame.SecondPoint.Y - frame.FirstPoint.Y));

            g.Dispose();
            ReleaseDC(IntPtr.Zero, desktopPtr);
        }
    }
}

, но получаю волновую медленную отрисовку как на картинке ниже. При этом сквозь отрисовку невозможно "насквозь" работать с окнами за фильтром (vs и т.д.).
65b4c7bc83d09520890939.gif
Также нашел код на просторах интернета, где люди делают прозрачный фон формы, при которой можно продолжить работать с любым окном за ней. Но мы тогда не получаем цветовой фильтр, а просто прозрачную форму.
65b4c8a3da91c039579845.gif
Также нашел библиотеку https://github.com/lolp1/Overlay.NET
Смог вырезать то, что мне нужно
65b4cb158cc62835702466.png
Но тут есть проблема, что можно оверлей вешать лишь на какой-то запущенный процесс. И вторая проблема при попытке перенести этот код в winform app - он запустился и вроде работает, но при этом ничего не отрисовывает на том же notepad.
Можете мне подсказать какое-нибудь вменяемое решение, чтоб получить примерно вот это:
65b4cba86f8e5394743168.png
  • Вопрос задан
  • 60 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Имеет смысл посмотреть в исходниках вот этого приложения: https://github.com/Tyrrrz/LightBulb
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы