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);
    

Anmelden zum Antworten