CDC Problem
-
Hallo
ich hab heir eine Zeichenfläche, worauf ich ein Pfeil zeichne.
Dieser Pfeil soll dann später mit Farbe gefüllt werden.
Dazu habe ich die Methode "FloodFill" gewählt und als Übergabeparameter einen beliebigen x und y Wert angegeben, der innerhalb des Pfeilbereichs liegt.
Lieder füllt der mir aber nicht den Pfeil, sondern gleich die ganze Zeichenfläche aus.
Liegt das vielleicht am PenStyle?
Da habe ich PS_SOLID
Zuerst war meine Vermutung, dass vielleicht irgendwo ein "offener Pixel" in dem Bereich ist und habe dann nur ein Rechteck zeichnen lassen. Aber das Ergebnis war leider das selbe.
-
Warum machst de das denn nciht einfach mit nem Poligon? Das geht schnell und einfach... kannst direkt mit der entsprechenden Farbe fillen..

-
ein Poligon?
hab ich noch nie was von gehört *gg*
wo find ich da denn Infos zu?
-
CDC::Polygon
-
aaaaaja
is ma krass am funktionieren
thx
aber irgendwas muss da doch anders sein als beim normalen MoveTo und LineTo
und wenns nur nen anderer PenStyle ist
weil eigentlich macht die Methode doch nix anderes als ein paar vordefinierte punkte miteinander zu verbinden...
...zumindest so wie das jetzt für mich ausschaut
-
Hast du denn einen Brush in deinen DC selektiert?
-
eeeehm....
neee, bei floodfill bin ich bis jetzt davon ausgegangen, dass er alles füllt, bis er nen pixel findet, der "anders" farbig ist
wenn ich z.b. ein Rechteck mit Rectangle zeichne, und dort den floodfill auf einen xy punkt innerhalb anwende, funktioniert das wunderbar
-
Selektiert doch mal einen Brush in deinen DC, bevor du Polygon aufrufst. Und schau dir CDC::SetPolyFillMode an.
-
jo, alles klar
thx
-
also irgendwie bin ich jetzt schon den ganzen morgen am rumhexen, aber der macht auch den brush net
keine ahnung warum. erst hab ich es mir angeschaut und selber implementiert, doch so sehr ich da auch nach fehlern gescuht habe, habe ich keine gefunden. hab dann schließlich das "original" auße MSDN kopiert und siehe da:
es läuft auch net *ggg*
ich hab ma echt keine ahnung mehr
LOGBRUSH logBrush; logBrush.lbStyle = BS_PATTERN; logBrush.lbColor = RGB(255, 0, 0); logBrush.lbHatch = HS_CROSS; // Declare an uninitialized CBrush ... CBrush brush; // ... and initialize it with the LOGBRUSH. brush.CreateBrushIndirect(&logBrush); // Select the brush (and perhaps a pen) into // the device context. CBrush* pOldBrush = (CBrush*)pDC->SelectObject(&brush); CPen* pOldPen = (CPen*)pDC->SelectStockObject(BLACK_PEN); // Have fun! pDC->Pie(CRect(100, 100, 300, 300), CPoint(0, 0), CPoint(50, 200)); // Restore the original device context objects. pDC->SelectObject(pOldBrush); pDC->SelectObject(pOldPen);