C # или C ++ - хороший ресурс для обзора графики Windows - 2D, рисование пикселей напрямую - PullRequest
2 голосов
/ 10 мая 2011

У меня есть эта странная маленькая программа lifesim, над которой я работаю, которая включает данные в 2d массиве. Это никогда не должно было быть большим делом, и я сначала посмотрел на несколько снимков, просто записав его во внешнее растровое изображение, пиксель за пикселем, который я затем открываю и смотрю. Это не дает мне никакого реального обновления экрана. Это ужасный способ сделать это, и, пытаясь реализовать рисование прямо в окне, я хочу сделать это правильно и эффективно с первого раза.

Я провел некоторый поиск и нашел bitblt , который позволит мне рисовать целый прямоугольник за раз, но весь мой графический опыт ограничен такими вещами, как WPF, большая часть терминологии теряется на мне. Я не знаю, в каком формате должны быть мои данные, чтобы передать их этой функции в виде растрового изображения. Читая msdn, я нахожу ссылки на такие вещи, как DC и т. Д., И еще много вещей, о которых я еще не узнал.

Мне не нужно много знать о графическом API Windows или каркасе .NET. Я не хочу изучать кучу DirectX. Я хочу сделать окно определенного размера, и я хочу иметь возможность установить значение RGB для каждого из этих пикселей по своему усмотрению. Нет рисунков фигур или чего-либо, только пиксели. Но я также не хочу делать это по одному пикселю за раз, по отдельности, для каждого системного вызова, потому что даже такой неубедительный программист, как я, знает, насколько это ужасно неэффективно. Кто-нибудь знает, есть ли хороший ресурс, который даст простое объяснение графики в Windows и позволит мне это сделать? MSDN отлично подходит для поиска вещей, но немного, если вы пытаетесь чему-то научиться с нуля.

C # предпочтительнее, потому что в нем написан образ жизни, но у меня нет никаких сомнений по поводу переписывания его в C ++, если для этого есть веская причина.

Ответы [ 2 ]

1 голос
/ 10 мая 2011

Вы можете попробовать класс WriteableBitmap в WPF и посмотреть, соответствует ли он вашим целям.

Учебное пособие

Все, что вам нужносделать, это сохранить данные в 2D-массив и записать их в WriteableBitmap.Установите WriteableBitmap в качестве источника изображения WPF-изображения, и все готово.

Дайте мне знать, если вам нужен пример.

0 голосов
/ 10 мая 2011

Что вы, вероятно, хотите сделать, это использовать LockBits для блокировки данных вашего изображения, а затем манипулировать вашим изображением в виде массива.Вот отличный урок от Боба Пауэлла:

http://www.bobpowell.net/lockingbits.htm

В противном случае, если скорость не имеет значения, вы можете использовать методы GetPixel и SetPixel.Это ужасно медленно, но будет работать в управляемой среде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...