Градиентная заливка растрового изображения и CreatePatternBrush просто дают черную заливку вместо градиента - PullRequest
2 голосов
/ 22 марта 2010

Я пытаюсь создать градиентную кисть в Windows Mobile следующим образом:

HBITMAP hBitmap = CreateBitmap(16, 16, 1, 16, NULL);
HDC hDC = CreateCompatibleDC(NULL);
HBITMAP hPrevious = SelectObject(hDC, hBitmap);
TRIVERTEX vert[2];
GRADIENT_RECT gRect;
//... fill in vert and gRect
GradientFill(hDC, vert, 2, &gRect, 1, GRADIENT_FILL_RECT_V);
SelectObject(hDC, hPrevious);
Delete(hDC);

HBRUSH hPatternBrush = CreatePatternBrush(hBitmap);
HDC hDC = BeginPaint(hWnd, &ps);
SelectObject(hDC, hPatternBrush);
RoundRect(hDC, ...);
EndPaint(hWND, &ps);

Нарисуйте растровое изображение без узорной кисти

HDC hdcSrc = CreateCompatibleDC (NULL);
HGDIOBJ hbmOld = SelectObject (hdcSrc, hBitmap);
BitBlt (hDC, ..., hdcSrc, ..., SRCCOPY);
SelectObject (hdcSrc, hbmOld);
DeleteDC (hdcSrc);

Этот код создает круглый прямоугольник с черным фоном, а не кистью узора. Я могу нарисовать hBitmap, который используется для создания кисти, и он рисует градиент. У кого-нибудь есть решение?

...