Фон: в настоящее время я использую настраиваемые элементы управления в своем проекте C# (базовые элементы управления просто рисуют индивидуальный внешний вид (с помощью gdi +?)). Большинство этих элементов управления имеют прозрачные сегменты для неправильной формы и т. д.
Проблема: я хочу наложить полупрозрачную (неправильной формы) панель на группу элементов управления. В настоящее время я прикрепляю накладку к области задействованных элементов управления. Это работает нормально, и результаты выглядят неплохо, однако процесс очень медленный.
Вопрос: Могу ли я как-нибудь ускорить процесс рендеринга, смешав немного OpenGL / DirectX и заставив видеокарту выполнять все необходимые операции рендеринга вместо того, чтобы полагаться на довольно медленный процессор?





AFAIK вы не можете смешивать GDI + и OpenGL / DX.
Если у вас низкая производительность и абсолютно уверен считает, что это узкое место в GDI +, а не в вашем коде, то мог имеет смысл отказаться от GDI + и заменить его DX / OGL. (Тем не менее, вам придется писать свои собственные элементы управления, что было бы большой проблемой в @ $$)
Или, для более простого подхода, попробуйте WPF / Silverlight! По умолчанию его можно настраивать и изменять скин, и он основан на DX.
К сожалению, у меня нет времени ни на создание полностью DX-системы, ни на изучение Silverlight. С этой целью я даже не уверен, что целевой ноутбук XP может работает под управлением Silverlight!
Вы можете смешивать GDI + и DirectX.
Вы пробовали включить DoubleBuferring на своих элементах управления, чтобы посмотреть, дает ли это повышение производительности?
http://www.codeproject.com/KB/graphics/DoubleBuffering.aspx
Да, есть, хотя, похоже, это не дает никаких преимуществ. Хотя это то, что я действительно не тестировал. В настоящее время все приложение C# имеет двойную буферизацию.
Посмотрите на WPF и Silverlight. ты бы лучше спал по ночам.
wpf использует аппаратное ускорение, а gdi - нет.