C # Объединить GDI + и OpenGL / DirectX - PullRequest
2 голосов
/ 07 ноября 2008

Фон : в настоящее время я использую пользовательские элементы управления в своем проекте C # (основные элементы управления просто рисуют собственный внешний вид (используя gdi +?)). Большинство этих элементов управления имеют прозрачные сегменты неправильной формы и т. Д.

Проблема : Я хочу наложить полупрозрачную (неправильной формы) панель на группу элементов управления. В настоящее время я закрепляю покрывающую панель на области элементов управления. Это отлично работает, и результаты выглядят хорошо, однако процесс идет очень медленно.

Вопрос : Есть ли способ ускорить процесс рендеринга, смешав немного OpenGL / DirectX и заставив видеокарту выполнять весь необходимый рендеринг, а не полагаясь на довольно медленный процессор?

Ответы [ 3 ]

3 голосов
/ 07 ноября 2008

AFAIK, вы не можете смешивать GDI + и OpenGL / DX.

Если вы получаете низкую производительность и абсолютно уверены , что это узкое место в GDI +, а не в вашем коде, тогда может иметь смысл отказаться от GDI + и заменить его DX / OGL. (Тем не менее, вам придется написать свои собственные элементы управления, что будет большой болью в @ $$)

Или, для более простого подхода, попробуйте WPF / Silverlight! Это настраиваемый и скины по умолчанию, и он основан на DX.

2 голосов
/ 08 ноября 2008

Посмотрите на WPF и Silverlight. Вы бы лучше спали ночью.

0 голосов
/ 07 ноября 2008

Вы пытались включить DoubleBuferring на своих элементах управления, чтобы увидеть, дает ли это повышение производительности?

http://www.codeproject.com/KB/graphics/DoubleBuffering.aspx

...