Kreisdiagram einfärben



  • COLORREF	r = RGB(131,133,226),	
    		g = RGB(19,236,187),	
    		b = RGB(0,0,255),
    		sw= RGB(255,255,255);	
        CBrush RedBrush(r);
        CBrush BlueBrush(b);
        CBrush GreenBrush(g);
    
        pDC->SelectObject(&GreenBrush);
    	//-------------------------------------------------------------------------------------+
    	//	Kreis Zeichnen ANFANG							       !
    	//-------------------------------------------------------------------------------------+
    
    	//------------------------------------------------------------------+
    	//	Pens															!
    	//------------------------------------------------------------------+
    	CPen PenLin1(PS_SOLID,1,RGB(255,255,255));
    
    	oldPen		= pDC->SelectObject(&PenLin1);
    
    	CRect rect(90,90,300,300);                //Zeichenfläche
    
        	CPoint center(static_cast<int>((rect.right-rect.left)/2+rect.left), static_cast<int>((rect.bottom-rect.top)/2+rect.top));
    
    	int radius = (rect.right-rect.left)/2;
    
    	if(m_Co==0||m_Co==2)
    	{
    
        	tSchneid=diff0-diff2 ,//1 
            tWarte=diff1  ,
    	tRuest=diff1;//10  
         	tGesamt = tSchneid + tWarte + tRuest;
    
    	}
    
        	pDC->Ellipse(rect);
    
        	//erster Teilstrich von Mitte nach oben
        	pDC->MoveTo(center);
        	pDC->LineTo(center.x, center.y-radius);
    
        	//Schneidzeit winkel  berechnen
        	double winkel = tSchneid*(2*M_PI/tGesamt);//winkel in °
    	//Ruestzeit winkel  berechnen
    	double winkel2= tRuest*(2*M_PI/tGesamt);
    
    	//Schneidzeit zeichnen
       	pDC->MoveTo(center);
        	pDC->LineTo(center.x + sin(winkel)*radius, center.y - cos(winkel)*radius);
    
        	//Fläche einfärben
        	pDC->ExtFloodFill(200, 200, r,FLOODFILLSURFACE);//200,200
    
    	//Ruestzeit zeichnen
    	pDC->MoveTo(center);
        	pDC->LineTo(center.x -sin(winkel2)*radius, center.y- cos(winkel2)*radius);
    
    	//Fläche einfärben
       	pDC->ExtFloodFill(200, 200, b,FLOODFILLSURFACE);
    

    Hallo,
    Ich zeichne oben auf ein Dialog ein Kreisdiagramm (Chart) und ich teile diese kreis diagramm in 3 teile. Für jedes teil berechne ich einen Winkel wie oben
    und ich möchte jedes teil des KReisdiagramms mit verschiedene Farben einfärben.

    Mein Problem ist , ich kann diese Kreisdiagramm in 3 teile teilen aber die farben sind bei alle teile gleich. Obwohl ich jedes teil mit verschiedene farben
    einfärben.
    Wenn mir jemand helfen könnte , würde ich mich sehr freuen.

    Danke im Voraus für die Unterstützung



  • keine Hilfe !!!???



  • 1. Zeile der Doku zu ExtFloodFill:

    Fills an area of the display surface with the current brush.

    Also CBrush anlegen und mit SelectObject umschalten vor dem Zeichnen!



  • Vielen Dank für deine Antwort

    CBrush ist oben schon angelegt. Was meinst du mit "SelectObject umschalten vor dem Zeichnen" kannst du mal bitte deutlicher erklären. Oder eine kurze Änderung bei der Code zeigen bitte.
    Wie sollte ich das ändern?


  • Mod

    Ja! Du musst die Farbe selektieren mit der Du zeichnen möchtes. Ja mit SelectObject. Dasmachst Du doch schon, aber eben nur mit einer Farbe.

    Wie wäre es mit dem Lesen eines kleinen Tutorials?


Anmelden zum Antworten