Вход/Регистрация
Программирование на Visual C++. Архив рассылки
вернуться

Jenter Алекс

Шрифт:

// мы используем созданный нами класс MyItem.

// Элементы управления (типа лист-бокса) в .Net

// позволяют хранить вместо текстового значения

// объект, а при отображении текста в строке вызывают

// метод – ToString. Так что объект любого класса,

// реализующего метод ToString, может выступать в

// качестве элемента лист-бокса.

listBox1.Items.Add(new MyItem(m.ToString, m.Index, m.Length));

}

 } catch(Exception e1) {

MessageBox.Show(e1.ToString, "Error");

 } finally {

listBox1.EndUpdate;

statusBar1.Text = "Done " + iCountMatchs.ToString;

 }

}

Заключение

Это только краткое ведение в регулярные выражения и их использование. Если вы хотите лучше разобраться в этом, попробуйте потренироваться в создании регулярных выражений самостоятельно. Практика показывает, что разбор чужих регулярных выражений практически бесполезен, читать их почти невозможно. Однако лучше научиться пользоваться ими – это часто упрощает жизнь.

ВОПРОС – ОТВЕТ 

Как вывести на экран картинку в JPEG/GIF/PNG/др. формате?

7 способов как это сделать

Автор: Павел Блудов

Демонстрационное приложение (WTL) DrawImg (50kb)

Сегодня практически все программы используют различные картинки в качестве элементов интерфейса. Даже существует API функция ::LoadImage, умеющая загружать файлы в формате bmp, ico и cur. Этого достаточно для панелей управления и диалогов. Но если размер картинки превышает 100x100 пикселов и их нужно несколько, файлы формата bmp использовать не удобно. Хочется что-то вроде jpg или gif.

Тут ::LoadImage нам уже не помошник. Придется использовать специальные библиотеки. Наибольшей популярностью пользуются:

Independent JPEG Group

Portable Network Graphics

TIFF Software

Intel(R) JPEG Library

Image Library

CXImage

Small JPEG Decoder Library

Все они хорошо документированны и снабжены примерами. Подробное рассмотрение этих библиотек займет слишком много времени и выходит за рамки этой статьи. Давайте лучше уделим внимание некоторым специальным API, предназначенным для работы с файлами изображений.

Способ 1 (OleLoadPicture)

Самый "официальный" способ. Появился вместе с OLE32 и работает до сих пор. Функции OleLoadPicture(Ex) и OleLoadPicturePath умеют загружать картинки в формате BMP, GIF, JPEG, ICO, WMF, и EMF:

#include <olectl.h>

HRESULT Load(LPCTSTR szFile) {

 CComPtr<IStream> pStream;

 // Load the file to a memory stream

 HRESULT hr = FileToStream(szFile, &pStream);

 if (SUCCEEDED(hr)) {

// Decode the picture

hr = ::OleLoadPicture(

pStream, // [in] Pointer to the stream that contains picture's data

0, // [in] Number of bytes read from the stream (0 == entire)

true, // [in] Loose original format if true

IID_IPicture, // [in] Requested interface

(void**)&m_pPicture // [out] IPictire object on success

);

 }

 return hr;

}

HRESULT DrawImg(HDC hdc, const RECT& rcBounds) {

 if (m_pPicture) {

// Get the width and the height of the picture

long hmWidth = 0, hmHeight = 0;

m_pPicture->get_Width(&hmWidth);

m_pPicture->get_Height(&hmHeight);

// Convert himetric to pixels

int nWidth = MulDiv(hmWidth, ::GetDeviceCaps(hdc, LOGPIXELSX), HIMETRIC_INCH);

int nHeight = MulDiv(hmHeight, ::GetDeviceCaps(hdc, LOGPIXELSY), HIMETRIC_INCH);

// Display the picture using IPicture::Render

return m_pPicture->Render(

hdc, // [in] Handle of device context on which to render the image

rcBounds.left, // [in] Horizontal position of image in hdc

  • Читать дальше
  • 1
  • ...
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: