CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 3 of 3
  1. #1
    Join Date
    Jun 2008
    Posts
    61

    Arrow Coordinate problem (an image attached)

    I want to reuse DrawPie function to draw 4 same pies, but it was unexpected. I don't understand what have been happening.
    I divide the client area by 4, then pass each rect to DrawPie.

    application image: http://i240.photobucket.com/albums/f...214/post-1.jpg

    Code:
    void CMainWindow::DrawPie(CDC *pDC, CRect &rect)
    {
    	// prepare to draw pie
    	CBrush brush;
    	brush.CreateHatchBrush(HS_BDIAGONAL, RGB(255, 0, 0));
    	CBrush *pOldBrush = pDC->SelectObject(&brush);
    
    	CPoint startPoint = rect.BottomRight();
    	CPoint endPoint = rect.BottomRight();
    	startPoint.y /= 2;
    	endPoint.x /= 2;
    
    	// draw pie
    	pDC->Pie(&rect, startPoint, endPoint);
    
    	pDC->SelectObject(pOldBrush);
    }
    
    void CMainWindow::OnPaint()
    {
    	CPaintDC dc(this);
    	CRect rect;
    	GetClientRect(&rect);	
    	
    	
    	int leftCenter = rect.left / 2;
    	int topCenter = rect.top / 2;
    	int rightCenter = rect.right / 2;
    	int bottomCenter = rect.bottom / 2;
    
    	COLORREF clrColors[] = {RGB(100, 0, 0), RGB(0, 100, 0), RGB(0, 0, 100), RGB(100, 0, 100)};
    	int widthIncrement = rect.right / 2;
    	int heightIncrement = rect.bottom / 2;
    	int k = 0;
    	for(int i = 0; i < rect.bottom; i += heightIncrement)
    		for(int j = 0; j < rect.right; j += widthIncrement)
    		{
    			CPoint leftTop(j, i);
    			CPoint rightBottom(j + widthIncrement, i + heightIncrement);
    
    			CRect rect;
    			rect.TopLeft() = leftTop;
    			rect.BottomRight() = rightBottom;
    
    			CBrush brush;
    			brush.CreateSolidBrush(clrColors[k++]);
    			CBrush *pOldBrush = dc.SelectObject(&brush);
    			dc.Rectangle(rect);
    
    			DrawPie(&dc, rect);
    			dc.SelectObject(pOldBrush);
    		}	
    }
    Thank you
    Last edited by Emerald214; February 24th, 2010 at 06:56 AM.

  2. #2
    Join Date
    Jul 2005
    Location
    Netherlands
    Posts
    2,042

    Re: Coordinate problem (an image attached)

    Quote Originally Posted by Emerald214 View Post
    [code]
    CPoint startPoint = rect.BottomRight();
    CPoint endPoint = rect.BottomRight();
    startPoint.y /= 2;
    endPoint.x /= 2;
    Check which points are calculated here for each of the four pies you draw. Then check what those points should be.

    BTW, why did you post this in the non visual C++ forum?
    Cheers, D Drmmr

    Please put [code][/code] tags around your code to preserve indentation and make it more readable.

    As long as man ascribes to himself what is merely a posibility, he will not work for the attainment of it. - P. D. Ouspensky

  3. #3
    Join Date
    Jun 2008
    Posts
    61

    Re: Coordinate problem (an image attached)

    I'm sorry. I did wrong-post.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured