灰度柱状图的绘制

灰度柱状图的绘制

                                                                                                  By EmilMatthew 06/2/28

上回书说到我完成了对BMP文件的解析.

:

 http://blog.csdn.net/emilmatthew/archive/2006/02/04/591814.aspx

今天,接着上次的程序,做一个小的应用,绘制黑白图像的灰度柱状图

 

程序总体设计思路:

                     1统计各灰度出现的频率.

                     2将频率值转规范到0-100的区间上

                     3根据规范化后的灰度频率矩阵,绘制直方图.

 

关键代码:

       void BMParse::showHist(HDC inHDC,int x0,int y0)

       {

                            int arrHists[256];

                           

                            int i,j;

                            int maxHistVal;

                           

                            for(i=0;i<256;i++)

                                   arrHists[i]=0;

 

                            for(j=0;j<mBMFileInfo.bmHeight;j++) 

                                   for(i=0;i<mBMFileInfo.bmWidth;i++)

                                   {

                                          //     if(bmpMatrix[j][i]>=0&&bmpMatrix[j][i]<256)

                                                        arrHists[bmpBWMatrix[j][i]]++;

                                   }

                           

                            /*find max hist val*/

                            maxHistVal=arrHists[0];

                            for(i=1;i<256;i++)

                                   if(arrHists[i]>maxHistVal)

                                          maxHistVal=arrHists[i];

                           

                            for(i=0;i<256;i++)

                                   arrHists[i]=(int)((float)arrHists[i]/(float)maxHistVal*100);

                                         

                            /*show part*/       

                           

                            /*x-axis*/

                            MoveToEx(inHDC,x0,y0,NULL);

                            LineTo(inHDC,x0+270,y0);

                           

                           

                            MoveToEx(inHDC,x0,y0,NULL);

                            for(i=0;i<256;i++)

                            {

                                          MoveToEx(inHDC,x0+i,y0,NULL);

                                          LineTo(inHDC,x0+i,y0-arrHists[i]);

                            }           

                           

       }

 

 

效果:

      

 

代码下载:

http://emilmatthew.51.net/EmilPapers/06_11ThreadHist/code.rar

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值