Использование 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
для возврата ресурсов в систему.
как правило, каждый когда вы пишете гипс, рассматривайте код как очень подозрительный. Всегда старайтесь писать код без приведений.