在C ++中使用FillRect()

时间:2013-04-19 17:43:06

标签: c++ visual-c++ graphics gdi

我是Visual C ++中使用Graphics的新手。我只是想制作一个充满颜色的矩形。需要帮助来纠正这个......

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 个答案:

答案 0 :(得分:5)

这通常是警告,而不是错误。在这种情况下,它似乎也是虚假的。

可以更好地工作,如下所示:

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投射颜色似乎不太有效。

答案 1 :(得分:1)

由于此代码,您的代码失败了:

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

您无法以任何有意义的方式将RGB颜色投射到HBRUSH。获得HBRUSH的唯一方法是让系统给你一个。

因此,您需要使用其中一个API函数创建一个真实的画笔。例如,CreateSolidBrush

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

完成画笔后,请调用DeleteObject将资源返回系统。

作为一般规则,每次编写演员时,都要将代码视为非常可疑。始终努力编写没有演员表的代码。