本文整理汇总了C++中gdiplus::Image::GetLastStatus方法的典型用法代码示例。如果您正苦于以下问题:C++ Image::GetLastStatus方法的具体用法?C++ Image::GetLastStatus怎么用?C++ Image::GetLastStatus使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类gdiplus::Image
的用法示例。
在下文中一共展示了Image::GetLastStatus方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ChangeSubPic
BOOL COBSButton::ChangeSubPic(STATE index, LPCTSTR lpszImage)
{
if (m_hWnd == NULL || lpszImage == NULL)
{
return FALSE;
}
Gdiplus::Image* pImage = Gdiplus::Image::FromFile(lpszImage);
if ((pImage == NULL) || (pImage->GetLastStatus() != Gdiplus::Ok))
{
if (pImage)
{
delete pImage;
pImage = NULL;
}
return FALSE;
}
int nPos = pImage->GetWidth()*index;//¼ÆËã4ÕÅͼƬÐèÒª¶àÉÙÏñËØ
Gdiplus::Graphics graph(m_hdcMemory);
graph.SetSmoothingMode(Gdiplus::SmoothingModeNone);
graph.DrawImage(pImage, nPos, 0, pImage->GetWidth(), pImage->GetHeight());
return TRUE;
}
示例2: bkimg
static Gdiplus::Image* bkimg(int rcid) {
HRSRC hrsc = ::FindResource(hInst, MAKEINTRESOURCE(rcid), TEXT("PNG"));
DWORD size = ::SizeofResource(hInst, hrsc);
LPVOID hg = ::LoadResource(hInst, hrsc);
HGLOBAL mem = ::GlobalAlloc(GMEM_MOVEABLE, size);
Gdiplus::Image* img = 0;
if (mem) {
LPVOID pmem = ::GlobalLock(mem);
if (pmem) {
::CopyMemory(pmem, hg, size);
LPSTREAM is;
if (::CreateStreamOnHGlobal(pmem, FALSE, &is) == S_OK) {
Gdiplus::Image* m = new Gdiplus::Image(is);
is->Release();
if (m->GetLastStatus() != Gdiplus::Ok) {
delete m;
return img;
}
img = m;
}
::GlobalUnlock(mem);
}
::GlobalFree(mem);
}
return img;
}
示例3: OnCmdFileOpen
void OnCmdFileOpen(HWND hWnd)
{
winx::OpenFileDialog dlg(
_T("Images Files(*.jpg;*.png;*.tif;*.bmp;*.gif)\0*.jpg;*.png;*.tif;*.bmp;*.gif\0All Files(*.*)\0*.*\0")
);
if (IDOK == dlg.DoModal())
{
USES_CONVERSION;
Gdiplus::Image* image = new Gdiplus::Image(T2CW(dlg.lpstrFile));
if (image->GetLastStatus() != Gdiplus::Ok)
{
delete image;
winx::ExMsgBoxTrace(hWnd, _T("Error"), _T("Can't load image from %s"), dlg.lpstrFile);
}
else
{
SetImage(image);
}
}
}
示例4: Create
BOOL COBSButton::Create(LPCTSTR lpszCaption, const RECT& rect, HWND hParentWnd, \
UINT nID, LPCTSTR lpszImage,int nSubPic)
{
if (m_hWnd)
return FALSE;
if (nSubPic>4||nSubPic<=0)
{
return FALSE;
}
m_hWnd = CreateWindow(TEXT("BUTTON"), lpszCaption, \
WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_OWNERDRAW, \
rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, \
hParentWnd, (HMENU)nID, NULL, NULL);
if (NULL == m_hWnd)
{
goto CREATE_FAIL;
}
SendMessage(m_hWnd, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), TRUE);
m_OldProc = (WNDPROC)SetWindowLong(m_hWnd, GWLP_WNDPROC /*GWL_WNDPROC*/, (LONG)ButtonProc);
SetWindowLong(m_hWnd, GWLP_USERDATA, (LONG)this);
m_hFont = CreateFont(16, 0, 0, 0, FW_NORMAL, FALSE, FALSE, 0, DEFAULT_CHARSET, \
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, TEXT("Arial"));
Gdiplus::Image* pImage = NULL;
//¼ÓÔØͼƬ
if (lpszImage != NULL)
{
pImage = Gdiplus::Image::FromFile(lpszImage);
if ((pImage == NULL) || (pImage->GetLastStatus() != Gdiplus::Ok))
{
if (pImage)
{
delete pImage;
pImage = NULL;
}
return FALSE;
}
RECT windowRect;
GetWindowRect(m_hWnd, &windowRect);
SIZE sizeWindow;
sizeWindow.cx = (pImage->GetWidth() / nSubPic)*4;//¼ÆËã4ÕÅͼƬÐèÒª¶àÉÙÏñËØ
sizeWindow.cy = pImage->GetHeight();
HDC hDC = GetDC(m_hWnd);
m_hdcMemory = CreateCompatibleDC(hDC);
if (m_hdcMemory == NULL) return FALSE;
m_hFourStateBitmap = CreateCompatibleBitmap(hDC, sizeWindow.cx, sizeWindow.cy);
if (m_hFourStateBitmap == NULL) return FALSE;
m_hOldBmp = (HBITMAP)::SelectObject(m_hdcMemory, m_hFourStateBitmap);
if (m_hOldBmp == NULL) return FALSE;
Gdiplus::Graphics graph(m_hdcMemory);
graph.SetSmoothingMode(Gdiplus::SmoothingModeNone);
graph.DrawImage(pImage, 0, 0, sizeWindow.cx, sizeWindow.cy);
if (NULL == m_hFourStateBitmap)
{
goto CREATE_FAIL;
}
}
if (pImage)
{
delete pImage;
pImage = NULL;
}
return TRUE;
CREATE_FAIL:
if (m_hFourStateBitmap)
{
DeleteObject(m_hFourStateBitmap);
}
return FALSE;
}
示例5: BeginPaint
LRESULT
BlobMgmt::ShowImage()
{
#ifndef VC6
HDC hdc;
RECT rectwin;
wyInt32 renderwidth, renderheight;
PAINTSTRUCT ps;
LPSTREAM stream = NULL;
HGLOBAL glbmem;
void *glbbuffer;
wyWChar tempfilename[MAX_PATH+1] = {0}, path[MAX_PATH + 1] = {0};
wyString tempstr;
HANDLE hfile = INVALID_HANDLE_VALUE;
DWORD byteswritten = 0;
if(!m_piub->m_data || m_piub->m_datasize == 0)
{
VERIFY(hdc = BeginPaint(m_hwndimage, &ps));
VERIFY(EndPaint(m_hwndimage, &ps));
return 0;
}
/* allocate global memory and copy image data in it*/
VERIFY(glbmem = GlobalAlloc(GMEM_MOVEABLE | GMEM_NODISCARD, m_piub->m_datasize));
if(!glbmem)
return 0;
/* lock the global memory and get a pointer */
glbbuffer = GlobalLock(glbmem);
/* copy the memory to buffer */
CopyMemory(glbbuffer, m_piub->m_data, m_piub->m_datasize);
/* unlock it */
VERIFY(GlobalUnlock(glbmem)== NO_ERROR);
/* create the stream */
VERIFY(CreateStreamOnHGlobal(glbmem, FALSE, &stream)== S_OK);
/* prepare window for painting */
VERIFY(hdc = BeginPaint(m_hwndimage, &ps));
/* clear the window */
PrepareScreen(ps.hdc);
if(pGlobals->m_configdirpath.GetLength() || SUCCEEDED(SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, (LPWSTR)path)))
{
if(pGlobals->m_configdirpath.GetLength())
{
//wcscpy(path, pGlobals->m_configdirpath.GetAsWideChar());
wcsncpy(path, pGlobals->m_configdirpath.GetAsWideChar(), MAX_PATH);
path[MAX_PATH] = '\0';
}
else
{
wcscat(path, L"\\");
wcscat(path, L"SQLyog");
}
VERIFY(GetTempFileName(path, L"img", 0, tempfilename));
hfile = CreateFile(tempfilename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,
NULL, NULL);
VERIFY(hfile != INVALID_HANDLE_VALUE);
VERIFY(WriteFile(hfile, m_piub->m_data, m_piub->m_datasize, &byteswritten, NULL));
VERIFY(CloseHandle(hfile));
}
tempstr.SetAs(tempfilename);
WCHAR *wpath = GetWideString(tempstr.GetString());
Gdiplus::Graphics graphics(hdc);
Gdiplus::Image *image = new Gdiplus::Image(wpath);
HeapFree(GetProcessHeap(), 0, wpath);
/* in win95 image will be null so we exit */
if(!image)
goto ExitPara;
/* the binary data might not be image so image.getlastatus will not return Ok */
if(image->GetLastStatus()!= Gdiplus::Ok)
{
delete image;
goto ExitPara;
}
/* get the window width and calculate the correct render stats */
VERIFY(GetClientRect(m_hwndimage, &rectwin));
renderheight =(((LONG)image->GetHeight())> rectwin.bottom)?(rectwin.bottom):(image->GetHeight());
renderwidth =(((LONG)image->GetWidth())> rectwin.right)?(rectwin.right):(image->GetWidth());
graphics.DrawImage(image, 0, 0, renderwidth, renderheight);
delete image;
EndPaint(m_hwndimage, &ps);
ExitPara:
/* free up stuff */
VERIFY(DeleteFile(tempfilename));
if(stream)
stream->Release();
VERIFY(GlobalFree(glbmem)== NULL);
#endif
//.........这里部分代码省略.........
示例6: ReadImageProperty
BOOL ReadImageProperty(const TCHAR *lpszImage, PROPID propId, TCHAR *szProperty, int cchMax)
{
Gdiplus::GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR token;
Gdiplus::Status status = GdiplusStartup(&token, &gdiplusStartupInput, NULL);
if(status != Gdiplus::Ok)
{
return FALSE;
}
BOOL bSuccess = FALSE;
/* This object needs to be
deleted before GdiplusShutdown
is called. If it were stack
allocated, it would go out of
scope _after_ the call to
GdiplusShutdown. By allocating
it on the heap, the lifetime
can be directly controlled. */
Gdiplus::Image *image = new Gdiplus::Image(lpszImage, FALSE);
if(image->GetLastStatus() == Gdiplus::Ok)
{
if(propId == PropertyTagImageWidth)
{
bSuccess = TRUE;
StringCchPrintf(szProperty, cchMax, _T("%u pixels"), image->GetWidth());
}
else if(propId == PropertyTagImageHeight)
{
bSuccess = TRUE;
StringCchPrintf(szProperty, cchMax, _T("%u pixels"), image->GetHeight());
}
else
{
UINT size = image->GetPropertyItemSize(propId);
if(size != 0)
{
Gdiplus::PropertyItem *propertyItem = reinterpret_cast<Gdiplus::PropertyItem *>(malloc(size));
if(propertyItem != NULL)
{
status = image->GetPropertyItem(propId, size, propertyItem);
if(status == Gdiplus::Ok)
{
if(propertyItem->type == PropertyTagTypeASCII)
{
int iRes = MultiByteToWideChar(CP_ACP, 0, reinterpret_cast<LPCSTR>(propertyItem->value), -1,
szProperty, cchMax);
if(iRes != 0)
{
bSuccess = TRUE;
}
}
}
free(propertyItem);
}
}
}
}
delete image;
Gdiplus::GdiplusShutdown(token);
return bSuccess;
}