Я работаю над программой на C#, которая снимает скриншоты зелья экрана пользователя. Для большинства пользователей он работает так, как должен, но я недавно столкнулся с одной проблемой. Кажется, что (по крайней мере) один пиксельный цвет, который всегда выглядит прозрачным на выходном изображении. Любой экземпляр цвета # 0D0B0C (RGB 13, 11, 12) выглядит прозрачным в сохраненном png. Это с PixelFormat, установленным в Format32bppArgb. Если я настрою его на Format32bppRgb или Format24bppRgb, тот же цвет пикселя появится в черном в сохраненном png.C# Объект Bitmap, цвет выглядит прозрачным
Я понятия не имею, что может быть причиной этого, но единственное, что я смог сделать, чтобы «исправить», это очистить графический объект до этого цвета, прежде чем делать CopyFromScreen(). Я не хочу этого делать, хотя по нескольким причинам. Во-первых, я не знаю, является ли это единственным цветом, у которого есть проблема (с 16 777 216 цветами есть немало возможностей), а во-вторых, я ненавижу исправления взлома, это похоже на исправление взлома.
Может ли кто-нибудь пролить свет на то, что может вызвать эту проблему? Я запутался с PixelFormat в создании растрового изображения и с помощью метода CopyPixelOperation в методе CopyFromScreen ничего не работает. Тот факт, что очистка графического объекта от этого цвета «исправляет», кажется, говорит мне, что прозрачность исходит от самих экранных данных, но это не имеет смысла. Я слишком долго смотрел на это, я думаю, мне нужна новая перспектива. Если кто-нибудь знает, почему это может произойти, я бы хотел это услышать. Спасибо.
Все, что вам нужно сделать, чтобы диагностировать перемещение формы на экране и посмотреть, не исчезнет ли она. Я очень серьезно сомневаюсь, что проблема ... –
Это несколько пикселей и происходит на разных экранах/компьютерах, и это всегда только тот цвет. Я думал, проблема была исправлена, но один из пользователей программы сказал мне, что это все еще происходит. – HaLo2FrEeEk