Вы можете решить, действительно ли это решение для вас, или просто проигнорировать его.

ьзование GDI + для рисования различных цветов:

brush = new SolidBrush(color);
graphics.FillRectangle(brush, x, y, width, height);

Вы заметите, что непрозрачный цвет не показывает должным образом на стекле:

Как мне нарисовать сплошные цвета на стекле?

Вы также заметите, что полностью непрозрачный цвет обрабатывается по-разному в зависимости от того, какой это цвет:

непрозрачный черный: полностью прозрачныйнепрозрачный цвет: частично прозрачныйнепрозрачный белый: полностью непрозрачный

Может кто-нибудь указать мне на документацию по настольному композитору, которая объясняет, как обрабатываются разные цвета?

Обновление 3

Вы также заметите, чтоFillRectangle ведет себя иначе, чемFillEllipse:

FillEllipse с непрозрачным цветом рисует непрозрачный цветFillRectangle с непрозрачным цветом рисует частично (или полностью) прозрачный

Объяснение бессмысленного поведения, пожалуйста.

Обновление 4

Alwayslearning предложил мне изменить режим композитинга. ОтMSDN:

Перечисление CompositingMode

CompositingMode Перечисление определяет, как визуализированные цвета сочетаются с фоновыми цветами. Это перечисление используетсяGraphics::GetCompositingMode а также'График :: SetCompositingMode' методыГрафика учебный класс.

CompositingModeSourceOver

Указывает, что при отображении цвета он смешивается с цветом фона. Смесь определяется альфа-компонентом отображаемого цвета.

CompositingModeSourceCopy

Указывает, что при отображении цвета он перезаписывает цвет фона. Этот режим нельзя использовать вместе с TextRenderingHintClearTypeGridFit.

Из описанияCompositingModeSourceCopyПохоже, это не тот вариант, который я хочу. Из ограничений, которые он накладывает, это звучит как вариант, который я хочу. И с композицией, или прозрачность отключена этоне вариант, который я хочу, так как он выполняетSourceCopy, скорее, чемSourceBlend:

К счастью, это не зло, которое я должен созерцать, потому что это не решает мою актуальную проблему. После построения моегоgraphics объект, я попытался изменить режим композитинга:

graphics = new Graphics(hDC);
graphics.SetCompositingMode(CompositingModeSourceCopy); //CompositingModeSourceCopy = 1

Результат не влияет на вывод:

ЗаметкиWin32 роднойне .NET (то есть родные)не Winforms (то есть родные)GDI + (то есть родные)Смотрите такжеAero: Как нарисовать текст ClearType на стекле?Windows Aero: какого цвета рисовать, чтобы «стекло» появлялось?Vista / 7: Как получить цвет стекла?

Ответы на вопрос(6)

Ваш ответ на вопрос