powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Картинка ->метафайл
5 сообщений из 5, страница 1 из 1
Картинка ->метафайл
    #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
Картинка ->метафайл
    #32709257
Tracer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
код CreateFromMetafile покажи
...
Рейтинг: 0 / 0
Картинка ->метафайл
    #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
Картинка ->метафайл
    #32710464
Tracer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и ? CreateFromMetafile - это чтение картинки из метафайла, а тебе, как я понял, надо наоборот ?
...
Рейтинг: 0 / 0
Картинка ->метафайл
    #32711191
Mash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как раз в метафайл я помещаю Image с измененными размерами, а дальше мне нужно из него-то и вытащить измененную картинку в pic. Кажется, что дело тут в том, что где-то я неправильно копирую картинку в метафайл. Метафайл создается, я его вижу на диске, но без картики.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Картинка ->метафайл
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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