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