Beispiel #1
0
/*
函数名:
功能:
参数:

*/
void ShowTree(BinTree bt)
{
	
	int i,j,old_rx,old_ry,sum=0;
	
	
	MAX_X=getmaxx(),MAX_Y=getmaxy();
	BTreeToArr(bt,BTXY);
	GetBTArrXY(BTXY);
	/*两个循环是建模时是二维数组,但实践中二维数组错误,于是用了累加 等算法来查找*/
	for(i=0;i<5;i++)
	{
		
		for(j=0;j<pow(2,i);j++)
		{	
			 if(i==0)
			{
				FilledCircle(BTXY[sum].x,BTXY[sum].y,BTXY[sum].bt->data);
			}else if(BTXY[sum].bt->data)
			{	
				old_ry=30+(i-1)*MAX_Y/7;
				old_rx=pow(-1,j)*MAX_X/pow(2,i+1)+BTXY[sum].x;
				CLine(old_rx,old_ry+10,BTXY[sum].x,BTXY[sum].y,WHITE);
				FilledCircle(BTXY[sum].x,BTXY[sum].y,BTXY[sum].bt->data);
			}
			sum++;		
		}
			
		
		
	}
}
Beispiel #2
0
void Draw::FilledRectangleRoundEdge(SDL_Renderer* renderer,  SDL_Rect rectangle, int radius) {
  // Draw inner rectangle
  SDL_Rect inner = rectangle;
  inner.x += radius;
  inner.y += radius;
  inner.w -= radius*2;
  inner.h -= radius*2;
  SDL_RenderFillRect( renderer, &inner );
  
  // Draw outer
  SDL_Rect left = rectangle;
  left.y += radius;
  left.w = radius;
  left.h -= radius*2;
  SDL_RenderFillRect( renderer, &left );
  
  SDL_Rect right = rectangle;
  right.x += rectangle.w-(radius);
  right.y += radius;
  right.w = radius;
  right.h -= radius*2;
  SDL_RenderFillRect( renderer, &right );
  
  SDL_Rect up = rectangle;
  up.x += radius;
  up.w = rectangle.w-radius*2;
  up.h = radius;
  SDL_RenderFillRect( renderer, &up );
  
  SDL_Rect down = rectangle;
  down.y += rectangle.h-radius;
  down.x += radius;
  down.w = rectangle.w-radius*2;
  down.h = radius;
  SDL_RenderFillRect( renderer, &down );
  // Draw circles
  FilledCircle(renderer, rectangle.x+radius, rectangle.y+radius, radius);
  FilledCircle(renderer, rectangle.x+radius, rectangle.y+rectangle.h-radius, radius);
  FilledCircle(renderer, rectangle.x+rectangle.w-radius, rectangle.y+radius, radius);
  FilledCircle(renderer, rectangle.x+rectangle.w-radius, rectangle.y+rectangle.h-radius, radius);
}