2011-02-07 2 views
1

Я играю с растрами, и я хочу узнать самый быстрый способ рисовать байт [] на экране с помощью .net CF. Массив - это стандартный 24-битный растровый (Screen.Width * Screen.Height * 3 в длину, RGB-заказ), и сейчас я сохраняю массив в объект Bitmap и рисую его на экран с помощью Graphics.DrawImage (bmp) метод. Я чувствую, что это должно быть каким-то образом сделать это без необходимости создания растрового изображения.Быстрое отображение необработанных пиксельных данных из байт [] .net Compact Framework

Я использую C#, но я могу пойти родной, если потребности быть (я бы предпочел P/вызывающую, если это возможно, при условии, что это так)

Спасибо за любую помощь!

+0

небезопасным C# указатели " заполните "растровое изображение. Это должно дать огромное ускорение. – CodingBarfield

+0

У вас есть пример? Мне интересно, как это сделать ... Небезопасно мое второе имя! :) –

ответ

2

При рисовании изображений я нашел родной BitBlt, чтобы выполнить намного лучше, чем с использованием .NET Graphics, вы можете использовать его для отображения Bitmap или даже использовать GDI для создания растрового изображения.

http://msdn.microsoft.com/en-us/library/aa923590.aspx

Пример использования BitBlt в .NET CF (хотя это обратное тому, что вы делаете, и в VB.NET):

http://anoriginalidea.wordpress.com/2008/01/03/getting-a-screenshot-using-vbnet-on-the-compact-framework-20/

+0

Так что мне нужно создать растровое изображение, несмотря ни на что? Я не могу иметь прямой доступ к буферу кадров? –

+0

Я не думаю, что растровое изображение (собственное, созданное 'CreateBitmap') - это гораздо больше, чем блок пиксельных данных, конечно, вам нужно будет соответствовать формату GDI. И я не думаю, что вы можете представить битмап быстрее, чем битбит, оставаясь независимым от устройства. –

+0

Скажите, что я хотел пойти с DIB, потому что они распределены в куче памяти пользователя вместо кучи GWES. Какими будут мои варианты? И как мне это сделать? Спасибо за ответы btw :) –