Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Картинка ->метафайл / 5 сообщений из 5, страница 1 из 1
23.09.2004, 13:20
    #32708294
Mash
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинка ->метафайл
Привет всем!

Хочется научиться выводить картинки в разных масштабах. Картинка в буфере.
Суммируя найденные примеры форума и MSDN написала код, но картинка не отображается (вместо нее в метафайле - белый прямоугольник). Никак не могу понять, где ошибка.
(и что делать ) Может кто подскажет ...

--------------
Здесь картинка:

BYTE* pBuffer;
long szBuffer; //
-------------

А дальше хочу получить метафайл, чтобы подключить его к CPictureHolder pic ;
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
    

CPictureHolder pic;
HMETAFILE    hWMF;
HENHMETAFILE hEMF;
HDC hdcRef=::GetDC(m_hWnd);
CRect rectEmf( 0 ,  0 ,  50 ,  40 );
CMetaFileDC* pMCD=new CMetaFileDC;

pMCD->CreateEnhanced(CDC::FromHandle(hdcRef),NULL,rectEmf,L"temporary");
pMCD->SetMapMode(MM_TEXT);
pMCD->AddMetaFileComment((UINT)nlen, pBuffer);
hEMF=pMCD->CloseEnhanced();

UINT         uiSizeBuf;
LPSTR        lpEMFBits;
  
   // 
   //Get the size of the Windows metafile associated with hMF. 
   // 
  uiSizeBuf = GetWinMetaFileBits(hEMF,  0 , NULL, MM_TEXT, hdcRef);
   // 
   //Allocate enough memory to hold metafile bits. 
   // 
  lpEMFBits = (LPSTR)GlobalAllocPtr(GHND, uiSizeBuf);
   // 
   //Get the bits of the enhanced metafile associated with hEMF. 
   // 
  GetWinMetaFileBits(hEMF, uiSizeBuf,(LPBYTE)lpEMFBits, MM_TEXT, hdcRef);
   // 
   //Copy the bits into a memory-based Windows metafile. 
   // 
  hWMF = SetMetaFileBitsEx(uiSizeBuf, (LPBYTE)lpEMFBits);
   // 
   //Copy the Windows metafile to a disk-based Windows metafile. 
   // 
  CopyMetaFile(hWMF, L"a.wmf");
   // 
   //Done with the memory-based enhanced metafile, so get rid of it. 
   // 
pic.CreateFromMetafile(hWMF,  50 ,  40 , TRUE);

---------------------------------------------------------------
...
Рейтинг: 0 / 0
23.09.2004, 18:36
    #32709257
Tracer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинка ->метафайл
код CreateFromMetafile покажи
...
Рейтинг: 0 / 0
23.09.2004, 19:01
    #32709296
Mash
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинка ->метафайл
Это из MSDN:
--------------------------------------------------------
CPictureHolder::CreateFromMetafile
BOOL CreateFromMetafile( HMETAFILE hmf, int xExt, int yExt, BOOL bTransferOwnership = FALSE );

Return Value

Nonzero if the object is successfully created; otherwise 0.

Parameters

hmf

Handle to the metafile used to create the CPictureHolder object.

xExt

X extent of the picture.

yExt

Y extent of the picture.

bTransferOwnership

Indicates whether the picture object will take ownership of the metafile object.
...
Рейтинг: 0 / 0
24.09.2004, 14:20
    #32710464
Tracer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинка ->метафайл
Ну и ? CreateFromMetafile - это чтение картинки из метафайла, а тебе, как я понял, надо наоборот ?
...
Рейтинг: 0 / 0
24.09.2004, 19:20
    #32711191
Mash
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Картинка ->метафайл
Как раз в метафайл я помещаю Image с измененными размерами, а дальше мне нужно из него-то и вытащить измененную картинку в pic. Кажется, что дело тут в том, что где-то я неправильно копирую картинку в метафайл. Метафайл создается, я его вижу на диске, но без картики.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Картинка ->метафайл / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]