Использование FillRect () в C++

Я новичок в использовании графики в Visual C++. Я просто пытаюсь сделать прямоугольник, заполненный цветом. Нужна помощь, чтобы исправить это...

RECT rect;
HDC hdc;
hdc=CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL);
rect.left=30;
rect.right=100;
rect.top=50;
rect.bottom=200;
FillRect(hdc,&rect,(HBRUSH)(RGB(40,151,151)));

ошибка:

ERROR: The variable 'rect' is being used without being initialized.

2 ответов


обычно это предупреждение, а не ошибка. В этом случае он также представляется поддельным.

Это может работать лучше, если вы инициализируете его что-то вроде:

HDC hdc=CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL);
RECT rect = {30, 50, 100, 200};
HBRUSH brush = CreateSolidBrush(RGB(50, 151, 151));

FillRect(hdc, &rect, brush);

DeleteObject(brush);

отметим использование CreateSolidBrush -- литье цвета в HBRUSH кажется маловероятным.


ваш код терпит неудачу из-за этого кода:

(HBRUSH)(RGB(40,151,151))

вы не можете привести цвет RGB к HBRUSH в любом значимым образом. Единственный способ получить HBRUSH - это попросить систему дать вам один.

Итак, вам нужно создать настоящую кисть, используя одну из функций API для этой цели. Например, CreateSolidBrush.

HBRUSH hBrush = CreateSolidBrush(RGB(40,151,151));

когда вы закончите с кистью, позвоните DeleteObject для возврата ресурсов в систему.

как правило, каждый когда вы пишете гипс, рассматривайте код как очень подозрительный. Всегда старайтесь писать код без приведений.