CDC::Ellipse - transparente Füllung?



  • Hallo zusammen!

    Hab' gerade 3(!) Stunden nach einer Lösung gesucht, hab aber leider nichts gefunden.

    Ich möchte eine Ellipse zeichnen, jedoch _ohne_ Füllung.

    CRect rcEllipse( 100,100,120,150 );
        dc.Ellipse( rcEllipse );
    

    In der MSDN steht, daß die Ellipse immer mit dem current Brush gefüllt wird.
    Wie kann ich den aktuellen Brush transparent setzen ?

    Habs auch schon mit einem NULL-brush versucht, hat aber nicht gefunzt:

    aus der MSDN:

    LOGBRUSH logBrush;
    logBrush.lbStyle = NULL_BRUSH;
    logBrush.lbColor = RGB(0, 192, 192);
    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*)dc.SelectObject(&brush);
    

    Vielen Dank im Voraus!

    Liebe Grüße,
    Hannes.



  • Hi,
    nimm mal GetStockObject(NULL_BRUSH) um den Null-Brush zu bekommen. 🙂



  • Oder:

    logBrush.lbStyle = BS_NULL;



  • Hi Trolli!

    Vielen Dank!!! 😃

    Beides funktioniert!

    CBrush* pOldBrush = (CBrush*)dc.SelectObject(GetStockObject(NULL_BRUSH) );
    CRect rcEllipse( 100,100,120,150 );
    dc.Ellipse( rcEllipse );
    

    Wobei ja sicher die Methode mit GetStockObject die bessere/schnellere ist, da ja nicht extra ein Brush erstellt werden muß...

    Wäre doch was für die FAQ, oder ?

    Liebe Grüße,
    Hannes.



  • Aus der MSDN

    Arc
    The arc is drawn using the current pen; it is not filled.



  • Hi René!

    Kann sein daß der Arc nicht gefüllt wird, aber eine Ellipse ist immer gefüllt, oder ? (wenn auch mit einem NULL-brush)

    Vielen Dank an alle!

    Hannes.


Anmelden zum Antworten