📄 bitmap.c
字号:
#include "precomp.h"
/*
* @implemented
*/
HBITMAP STDCALL
CreateDIBSection(
HDC hDC,
CONST BITMAPINFO *BitmapInfo,
UINT Usage,
VOID **Bits,
HANDLE hSection,
DWORD dwOffset)
{
PBITMAPINFO pConvertedInfo;
UINT ConvertedInfoSize;
HBITMAP hBitmap = NULL;
pConvertedInfo = ConvertBitmapInfo(BitmapInfo, Usage,
&ConvertedInfoSize, FALSE);
if (pConvertedInfo)
{
hBitmap = NtGdiCreateDIBSection(hDC, hSection, dwOffset, pConvertedInfo, Usage, 0, 0, 0, Bits);
if (BitmapInfo != pConvertedInfo)
RtlFreeHeap(RtlGetProcessHeap(), 0, pConvertedInfo);
}
return hBitmap;
}
/*
* @implemented
*/
BOOL
STDCALL
BitBlt(HDC hdcDest, /* handle to destination DC */
int nXOriginDest, /* x-coord of destination upper-left corner */
int nYOriginDest, /* y-coord of destination upper-left corner */
int nWidthDest, /* width of destination rectangle */
int nHeightDest, /* height of destination rectangle */
HDC hdcSrc, /* handle to source DC */
int nXSrc, /* x-coordinate of source upper-left corner */
int nYSrc, /* y-coordinate of source upper-left corner */
DWORD dwRop) /* raster operation code */
{
return NtGdiBitBlt(hdcDest,
nXOriginDest,
nYOriginDest,
nWidthDest,
nHeightDest,
hdcSrc,
nXSrc,
nYSrc,
dwRop,
0,
0);
}
/*
* @implemented
*/
BOOL STDCALL
StretchBlt(
HDC hdcDest, /* handle to destination DC */
int nXOriginDest, /* x-coord of destination upper-left corner */
int nYOriginDest, /* y-coord of destination upper-left corner */
int nWidthDest, /* width of destination rectangle */
int nHeightDest, /* height of destination rectangle */
HDC hdcSrc, /* handle to source DC */
int nXOriginSrc, /* x-coord of source upper-left corner */
int nYOriginSrc, /* y-coord of source upper-left corner */
int nWidthSrc, /* width of source rectangle */
int nHeightSrc, /* height of source rectangle */
DWORD dwRop) /* raster operation code */
{
if ((nWidthDest != nWidthSrc) || (nHeightDest != nHeightSrc))
{
return NtGdiStretchBlt(hdcDest, nXOriginDest, nYOriginDest, nWidthDest,
nHeightDest, hdcSrc, nXOriginSrc, nYOriginSrc,
nWidthSrc, nHeightSrc, dwRop, 0);
}
return NtGdiBitBlt(hdcDest, nXOriginDest, nYOriginDest, nWidthDest,
nHeightDest, hdcSrc, nXOriginSrc, nYOriginSrc, dwRop, 0, 0);
}
/*
* @implemented
*/
HBITMAP WINAPI
CreateBitmapIndirect(const BITMAP *pbm)
{
if (pbm)
{
return NtGdiCreateBitmap(pbm->bmWidth,
pbm->bmHeight,
pbm->bmPlanes,
pbm->bmBitsPixel,
pbm->bmBits);
}
return NULL;
}
HBITMAP WINAPI
CreateDiscardableBitmap(
HDC hDC,
INT Width,
INT Height)
{
return NtGdiCreateCompatibleBitmap(hDC, Width, Height);
}
INT WINAPI
SetDIBitsToDevice(
HDC hDC,
int XDest,
int YDest,
DWORD Width,
DWORD Height,
int XSrc,
int YSrc,
UINT StartScan,
UINT ScanLines,
CONST VOID *Bits,
CONST BITMAPINFO *lpbmi,
UINT ColorUse)
{
return NtGdiSetDIBitsToDeviceInternal(hDC,
XDest,
YDest,
Width,
Height,
XSrc,
YSrc,
StartScan,
ScanLines,
(LPBYTE)Bits,
(LPBITMAPINFO)lpbmi,
ColorUse,
lpbmi->bmiHeader.biSizeImage,
lpbmi->bmiHeader.biSize,
FALSE,
NULL);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -