2016-10-14 1 views
0

Так я пытался перекрасить растрового программно когда пользователь нажал кнопку с ExtFloodFill с кодом нижеExtFloodFill застрял с Цвет белый

CDC* cdc = GetDlgItem(IDC_MAP_STATIC)->GetDC(); // Get the CStatic that contains the bitmap 
cdc->SetDCBrushColor(COLOR_SKYBLUE);   // constant for #00EEEE 
SetDCBrushColor((HDC)cdc, COLOR_SKYBLUE);  // Trying to change the cdc brush color 
// Just for debugging, i have inspected it and the value is the same with the COLOR_SKYBLUE value   
COLORREF cr = cdc->GetDCBrushColor(); 
cdc->ExtFloodFill(x,cdc->GetCurrentPosition().y+y, RGB(0, 0, 0), FLOODFILLBORDER); 

Но каждый раз, что я называю ExtFloodFill заливка будет только заполнить область белым цветом, и в соответствии с доком

Заполняет площадь поверхности дисплея с текущей кистью.

Я попытался изменить текущий цвет кисти CDC с помощью цвета skyblue. Но это совсем не работает.

IDC_MAP_STATIC - обычный объект CStatic. Я не использую подклассу CStatic для этого.

Так что же я сделал неправильно, что он заставил ExtFloodFill сохранить Flood-наполнение моего растрового изображения белым не skyblue?

ответ

0

Nevermind, решил это сразу же с этим фрагментом. Я не знаю, почему, но когда я установил цвет кисти с помощью SetDCBrushColor, он не изменяет выбранную кисть. Так с кодами на основе из this статьи я попытался объявить новую кисть и выберите его, прежде чем я пытался заливка его

CDC* cdc = GetDlgItem(IDC_MAP_STATIC)->GetDC(); 
CBrush cb(RGB(255, 0, 0)); //Make a new CBrush (Red) 
cdc->SelectObject(&cb); //Assign the CBrush to the CDC 
cdc->ExtFloodFill(x,y, RGB(0, 0, 0), FLOODFILLBORDER); 
DeleteObject(cb); 
ReleaseDC(cdc); 
+1

Вы либо протечек контекста устройства, или уничтожить его, пока еще есть ваша кисть выбрана в него. Ни один из них не служит хорошим предзнаменованием. Кроме того, ответ, который не объясняет, в чем проблема, и как он адресован, не совсем полезен. – IInspectable

+0

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

Смежные вопросы