002
14.06.2005, 15:45 Uhr
~Lee
Gast
|
C++: |
LPPICTURE pPicture; long lWidth, lHeight; int iWidth, iHeight;
BOOL LoadPicture(LPCTSTR pszFileName) { //datei öffnen HANDLE hFile = CreateFile(pszFileName, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
if(INVALID_HANDLE_VALUE == hFile) return FALSE;
//datei größe ermitteln DWORD dwFileSize = GetFileSize(hFile, NULL);
//speicher in größe der datei allokieren HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize); LPVOID pvData = GlobalLock(hGlobal);
//datei lesen u. im speicher behalten DWORD dwBytesRead = 0; BOOL bRead = ReadFile(hFile, pvData, dwFileSize, &dwBytesRead, NULL);
if(!bRead) return FALSE;
GlobalUnlock(hGlobal); CloseHandle(hFile);
//IStream* aus dem speicher erzeugen LPSTREAM pstm = NULL; HRESULT hr = CreateStreamOnHGlobal(hGlobal, TRUE, &pstm);
//IPicture vom bild erzeugen if(pPicture) pPicture->Release();
hr = OleLoadPicture(pstm, dwFileSize, FALSE, IID_IPicture, (LPVOID*)&pPicture); pstm->Release();
//breite u. höhe vom bild holen pPicture->get_Width(&lWidth); pPicture->get_Height(&lHeight);
HDC hdc = CreateIC(TEXT("DISPLAY"), NULL, NULL, NULL);
//in Pixel konvertieren iWidth = (lWidth * GetDeviceCaps(hdc, LOGPIXELSX)) / 2540; iHeight = (lHeight * GetDeviceCaps(hdc, LOGPIXELSY)) / 2540;
return TRUE; }
BOOL DrawPicture(HWND hwnd, HDC hdc) { if(pPicture) //wenn bild geladen { RECT rc; GetClientRect(hwnd, &rc);
//Bild anzeigen mittels Render pPicture->Render(hdc, 0, 0, iWidth, iHeight, 0, lHeight, lWidth, -lHeight, &rc);
return TRUE; }
return FALSE; }
|
das hab ich jezz dazu gefunden... und kann mir jmd erklaeren wie genau ich ein bild (z.b. bsp.jpg) darstelle und zwar bei den und den koordinaten ( z.b. diagonal: 100 ,vertikal: 200) |