Создание снимка экрана в формате JPEG в буфер с использованием GDI + и C ++

Я адаптировал этот код из другой статьи здесь, посвященной SO . Он делает снимок экрана рабочего стола и записывает его в файл с именем «test.jpg».

Меня интересует сохранение данных JPEG прямо в буфер для отправки по сети. Я почти уверен, что GdipSaveImageToStream - это то, что мне нужно, но я не могу понять, как это работает. Параметр GpImage особенно сбивает с толку.

Я ценю любую помощь, которую вы можете предоставить. {new Book () {Title = "artemis fowl: the time paradox", Pages = 380}, new Book () {Title = "the leutenant", Pages = 258} ...

Вот некоторые примеры данных:

List books = new List()
{
    new Book(){Title = "artemis fowl: the time paradox", Pages = 380},
    new Book(){Title = "the lieutenant", Pages = 258},
    new Book(){Title = "the wheel of time", Pages = 1032},
    new Book(){Title = "ender's game", Pages = 404},
    new Book(){Title = "the sphere",  Pages = 657}
};  

Справочная информация:

Вышеупомянутое использует упрощенную версию класса Book. Конечно, он будет содержать много полей. Моя конечная цель - позволить пользователю выполнять «расширенный» поиск, позволяющий пользователю указать любое поле и дополнительно разрешить пользователю указывать ключевые слова, используя логическую алгебру для определенного поля.

например: В текстовое поле поиска по названию: + (торт | тесто) + ~ демон

Вышеупомянутое будет означать: Найдите все книги, в названии которых есть слова «the», либо «cake», либо «кондитерские», и не содержит слова «демон».

Задача:

Детские шаги приведут к окончательному решению. Итак, изначально у меня был следующий код:

List> fs = new List>()
{
    b => b.Title.Contains("me"),
    b => b.Title.Contains("the")
};

var q2 = from b in books select b;
foreach (var f in fs)
    q2 = q2.Where(f);

foreach (Book b in q2)
{
    Console.WriteLine("Title:\t\t{0}\nPages:\t\t{1}\n",
                      b.Title, b.Pages);
}

Приведенный выше код работает нормально. Он ищет книги, в названии которых есть «И» И «я».

Фаза 2

Теперь фильтр имеет тип Func Book , bool>. Этот класс будет сгенерированным классом Entity Framework, и я не хочу использовать его в моем слое пользовательского интерфейса, где будет вводиться поисковая фраза и будут сгенерированы поисковые фильтры для передачи в BLL.

Итак, у меня есть следующее три попытки:

var q = from b in books select b;

List> filters  = new List>()
{
    s => s.Contains("me"),
    s => s.Contains("the"),
};

//This works...
for (int i = 0; i != filters.Count; ++i)
{
    Func daF = filters[i];
    q = q.Where(b => (daF(b.Title)));
}     

            //This produces an exception...
            //Due to index in query?
//            for (int i = 0; i != filters.Count; ++i)
//            {
//                q = q.Where(b => ((filters[i])(b.Title)));
//            }

            //This runs but doesn't produce the proper output
//            foreach (Func filter in filters)
//              q = q.Where(b => filter(b.Title));

foreach (Book b in q)
{
    Console.WriteLine("Title:\t\t{0}\nPages:\t\t{1}\n",
                      b.Title, b.Pages);
}

Первая закомментированная часть запускает исключение индексатора вне диапазона, заявляя, что значение i равно 2.

Вторая закомментированная часть запускается и производит вывод, но распечатывает ЧЕТЫРЕ из 5 книги ... все, ЗА ИСКЛЮЧЕНИЕМ книги под названием "игра Эндера". Это неправильно ...

Итак, прочитав мой пост, Я вижу, что не смог сдержать свою дурную привычку объяснять каждую мелочь ...

Итак, поехали. Пожалуйста, объясните, почему разные результаты. И я думаю, вы могли бы намекнуть на возможные улучшения моего текущего «решения».

5
задан ForeverLearnNeverMaster 10 April 2011 в 06:09
поделиться