WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Копирование графики в буфер и сохранение её же в файл

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Копирование графики в буфер и сохранение её же в файл
Yuri_64 опубликован 13-11-2001 12:53 MSK   Click Here to See the Profile for Yuri_64   Click Here to Email Yuri_64  
Привет всем!
Имеется функция, след. вида: void func(CDC* pDC); Которая рисует, например, круг :-). Надо картинку скопировать в буфер и сохранить в файл (BMP, Jpeg, Gif).
Копирование я делаю так:

void CopyToClipboard(CDC *pDC)
{
CDC dc;
dc.CreateCompatibleDC(pDC);
dc.SetMapMode(MM_LOMETRIC);
CBitmap bmp;
CSize size(m_InitSize.cx, -m_InitSize.cy);
dc.LPtoDP(&size);
bmp.CreateCompatibleBitmap(pDC, size.cx, size.cy);
dc.SelectObject(&bmp);
m_ptSavedStart = m_ptStart;
m_ptStart = CPoint(0, 0);

func(&dc);

m_ptStart = m_ptSavedStart;
tagSTGMEDIUM data;
COleDataSource *pOleData = new COleDataSource;
data.tymed = TYMED_GDI;
data.hBitmap = HBITMAP(bmp);
pOleData->CacheData(CF_BITMAP, &data);
pOleData->SetClipboard();
}

Этот код работает в 9Х, но в 2К paintbrush пишет что "Error read data" :-(, так что это вопрос номер раз,
а вопрос номер два - это как сохранить всё это в файл?
С уважением, Yuri

OlegN опубликован 13-11-2001 17:18 MSK     Click Here to See the Profile for OlegN  Click Here to Email OlegN     
для того чтобы сохранить нарисованное
в (BMP, JPEG, GIF) нужно использовать DIB-ы
(device independed bitmap)
Вместо CreateCompatibleBitmap используй
::CreateDIBSection

а насчет копирования в clipboard, я всегда
копирую тоже DIB-ы : CF_DIB формат, TYMED_HGLOBAL
И Везде работает.

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.