绘制3D饼图的方法

绘制3D饼图的方法

大家在MFC绘制图形时,可以用ms的免费插件mschart,或是功能强大的付费插件,在网上还可以找到一些免费的代码。功能自然没有前者强大,通用性也有一定的限制。不如自己动手:画饼图。

画饼图要有几个辅助函数:

这个函数的功能是把正圆上的角度推算成饼图椭圆上的角度。

int CDlgPie::TransformAngel(CRect rect, int angel)
{
    
int nRectWidth = rect.Width();
    
int nRectHeight = rect.Height();
    
double x = nRectWidth * cos(angel * PI / 180);
    
double y = nRectHeight * sin(angel * PI / 180);
    
float result = (float)(atan2(y, x) * 180 / PI);

    
if (result < 0
    
{
        result 
+= 360;
    }


    
int iResult = (int)(result+0.5);
    
return iResult;
}

 

另一个:
这个函数是用高中的椭圆公式推出来的,但是我数学比较垃圾,不知道应该怎么简化它了。

CPoint CDlgPie::GetEllipsePoint(CRect rect, int angel)
{
    
float a = (float)rect.Width() / 2;
    
float b = (float)rect.Height() / 2;

    angel 
= angel % 360;
    UINT quant 
= angel / 90 + 1;

    
float fAngel = (float)((float)angel / 360 * 2 * PI);
    
float tangent = (float)tan( fAngel );

    
double x = sqrt( a*a*b*/ (b*+ a*a*tangent*tangent) );
    
double y = sqrt( (a*a*b*- b*b*x*x) / a / a );

    
switch ( quant )
    
{
    
case 1:
        
break;
    
case 2:
        x 
= -x;
        
break;
    
case 3:
        x 
= -x;
        y 
= -y;
        
break;
    
case 4:
        y 
= -y;
        
break;
    
default:
        
break;
    }

    x 
= (int)(x+0.5);
    y 
= (int)(y+0.5);
    
    
int nTempX = (int)(a + 0.5);
    
int nTempY = (int)(b + 0.5);

    
int iResultX = (int)x + nTempX + rect.left;
    
int iResultY = abs((int)y - nTempY - rect.top);
    
return CPoint(iResultX, iResultY);
}

 

既然是立体的,就的有阴影的效果。 

long CDlgPie::GetDimColor(long lOriginColor)
{
    
//////////////////////////////////////////////////////////////////////////
    // 取得原颜色的RGB值
    long lRed = GetRValue(lOriginColor);
    
long lGreen = GetGValue(lOriginColor);
    
long lBlue = GetBValue(lOriginColor);
    
//////////////////////////////////////////////////////////////////////////

    
//////////////////////////////////////////////////////////////////////////

    // 对RGB颜色取半
    long lResultRed = lRed / 2;
    
long lResultGreen = lGreen / 2;
    
long lResultBlue = lBlue / 2;
    
long lResultColor = RGB(lResultRed, lResultGreen, lResultBlue);
    
//////////////////////////////////////////////////////////////////////////

    
return lResultColor;
}
要在Vue中使用Highcharts绘制3D,首先需要在你的项目中安装vue-highcharts库,并在main.js中引入Highcharts和Highcharts-3D模块。可以按照以下步骤进行操作: 1. 使用npm在你的项目中安装vue-highcharts库。 2. 在main.js中引入Highcharts和Highcharts-3D模块: import highcharts from 'highcharts' import highcharts3d from 'highcharts/highcharts-3d' highcharts3d(highcharts) 3. 在Vue组件中使用vue-highcharts组件,并设置你的3D的配置。 4. 参考上述的Vue教程来绘制3D。 通过以上步骤,你就可以在Vue中使用Highcharts库绘制3D了。请确保你已经正确安装了依赖库并按照引用和引用提供的方法进行配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【highCharts绘制3d】有、无高低差的3d](https://blog.csdn.net/phhzhhh/article/details/125807211)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [vue单页面中使用 highcharts 绘制3D](https://blog.csdn.net/qq_46566911/article/details/121280786)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值