gdiplus: Use an off-screen DC as an image surface.
This commit is contained in:
parent
97b92fe12c
commit
0553eba08f
|
@ -116,10 +116,9 @@ static INT ipicture_pixel_height(IPicture *pic)
|
||||||
|
|
||||||
IPicture_get_Height(pic, &y);
|
IPicture_get_Height(pic, &y);
|
||||||
|
|
||||||
hdcref = GetDC(0);
|
hdcref = CreateCompatibleDC(0);
|
||||||
|
|
||||||
y = MulDiv(y, GetDeviceCaps(hdcref, LOGPIXELSY), INCH_HIMETRIC);
|
y = MulDiv(y, GetDeviceCaps(hdcref, LOGPIXELSY), INCH_HIMETRIC);
|
||||||
ReleaseDC(0, hdcref);
|
DeleteDC(hdcref);
|
||||||
|
|
||||||
return y;
|
return y;
|
||||||
}
|
}
|
||||||
|
@ -131,11 +130,9 @@ static INT ipicture_pixel_width(IPicture *pic)
|
||||||
|
|
||||||
IPicture_get_Width(pic, &x);
|
IPicture_get_Width(pic, &x);
|
||||||
|
|
||||||
hdcref = GetDC(0);
|
hdcref = CreateCompatibleDC(0);
|
||||||
|
|
||||||
x = MulDiv(x, GetDeviceCaps(hdcref, LOGPIXELSX), INCH_HIMETRIC);
|
x = MulDiv(x, GetDeviceCaps(hdcref, LOGPIXELSX), INCH_HIMETRIC);
|
||||||
|
DeleteDC(hdcref);
|
||||||
ReleaseDC(0, hdcref);
|
|
||||||
|
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
@ -1688,7 +1685,7 @@ GpStatus WINGDIPAPI GdipCreateBitmapFromHICON(HICON hicon, GpBitmap** bitmap)
|
||||||
bih.biClrUsed = 0;
|
bih.biClrUsed = 0;
|
||||||
bih.biClrImportant = 0;
|
bih.biClrImportant = 0;
|
||||||
|
|
||||||
screendc = GetDC(0);
|
screendc = CreateCompatibleDC(0);
|
||||||
if (iinfo.hbmColor)
|
if (iinfo.hbmColor)
|
||||||
{
|
{
|
||||||
GetDIBits(screendc, iinfo.hbmColor, 0, height, lockeddata.Scan0, (BITMAPINFO*)&bih, DIB_RGB_COLORS);
|
GetDIBits(screendc, iinfo.hbmColor, 0, height, lockeddata.Scan0, (BITMAPINFO*)&bih, DIB_RGB_COLORS);
|
||||||
|
@ -1756,7 +1753,7 @@ GpStatus WINGDIPAPI GdipCreateBitmapFromHICON(HICON hicon, GpBitmap** bitmap)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ReleaseDC(0, screendc);
|
DeleteDC(screendc);
|
||||||
|
|
||||||
DeleteObject(iinfo.hbmColor);
|
DeleteObject(iinfo.hbmColor);
|
||||||
DeleteObject(iinfo.hbmMask);
|
DeleteObject(iinfo.hbmMask);
|
||||||
|
@ -1806,14 +1803,14 @@ static void generate_halftone_palette(ARGB *entries, UINT count)
|
||||||
|
|
||||||
static GpStatus get_screen_resolution(REAL *xres, REAL *yres)
|
static GpStatus get_screen_resolution(REAL *xres, REAL *yres)
|
||||||
{
|
{
|
||||||
HDC screendc = GetDC(0);
|
HDC screendc = CreateCompatibleDC(0);
|
||||||
|
|
||||||
if (!screendc) return GenericError;
|
if (!screendc) return GenericError;
|
||||||
|
|
||||||
*xres = (REAL)GetDeviceCaps(screendc, LOGPIXELSX);
|
*xres = (REAL)GetDeviceCaps(screendc, LOGPIXELSX);
|
||||||
*yres = (REAL)GetDeviceCaps(screendc, LOGPIXELSY);
|
*yres = (REAL)GetDeviceCaps(screendc, LOGPIXELSY);
|
||||||
|
|
||||||
ReleaseDC(0, screendc);
|
DeleteDC(screendc);
|
||||||
|
|
||||||
return Ok;
|
return Ok;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue