return (y * DisplayDPIY + 96 / 2) / 96;\r
}\r
\r
-HBITMAP ResizeBitmap(HBITMAP hBitmap, int UnitSizeX, int UnitSizeY)\r
+HBITMAP ResizeBitmap(HBITMAP hBitmap, int UnitSizeX, int UnitSizeY, int ScaleNumerator, int ScaleDenominator)\r
{\r
HBITMAP hDstBitmap;\r
HDC hDC;\r
BITMAP Bitmap;\r
HGDIOBJ hSrcOld;\r
HGDIOBJ hDstOld;\r
+ int Width;\r
+ int Height;\r
hDstBitmap = NULL;\r
if(hDC = GetDC(NULL))\r
{\r
{\r
if(GetObject(hBitmap, sizeof(BITMAP), &Bitmap) > 0)\r
{\r
- if(hDstBitmap = CreateCompatibleBitmap(hDC, CalcPixelX((Bitmap.bmWidth / UnitSizeX) * UnitSizeX), CalcPixelY((Bitmap.bmHeight / UnitSizeY) * UnitSizeY)))\r
+ if(UnitSizeX == 0)\r
+ UnitSizeX = Bitmap.bmWidth;\r
+ if(UnitSizeY == 0)\r
+ UnitSizeY = Bitmap.bmHeight;\r
+ Width = (Bitmap.bmWidth / UnitSizeX) * ((CalcPixelX(UnitSizeX) * ScaleNumerator) / ScaleDenominator);\r
+ Height = (Bitmap.bmHeight / UnitSizeY) * ((CalcPixelY(UnitSizeY) * ScaleNumerator) / ScaleDenominator);\r
+ if(hDstBitmap = CreateCompatibleBitmap(hDC, Width, Height))\r
{\r
hSrcOld = SelectObject(hSrcDC, hBitmap);\r
hDstOld = SelectObject(hDstDC, hDstBitmap);\r
SetStretchBltMode(hDstDC, HALFTONE);\r
- StretchBlt(hDstDC, 0, 0, CalcPixelX((Bitmap.bmWidth / UnitSizeX) * UnitSizeX), CalcPixelY((Bitmap.bmHeight / UnitSizeY) * UnitSizeY), hSrcDC, 0, 0, Bitmap.bmWidth, Bitmap.bmHeight, SRCCOPY);\r
+ StretchBlt(hDstDC, 0, 0, Width, Height, hSrcDC, 0, 0, Bitmap.bmWidth, Bitmap.bmHeight, SRCCOPY);\r
SelectObject(hSrcDC, hSrcOld);\r
SelectObject(hDstDC, hDstOld);\r
}\r