MFC编程问题求助

我建立的是一个基于对话框的程序,其中包括一个Picture控件(IDC_STATIC_HeightHist),和一个Button控件。我希望能在点击按钮后在Picture... 我建立的是一个基于对话框的程序,其中包括一个Picture控件(IDC_STATIC_HeightHist),和一个Button控件。我希望能在点击按钮后在Picture中显示出高程直方图。
【现在遇到的困难是】:编译通过,点击按钮后Picture中无任何变化。不知道是不是确少了什么函数?另外我的图像显示代码不是在OnPaint函数中,而是放在了按钮消息响应函数里,不知道行不行?

下面是我的代码:
void CHeightHistDlg::OnBUTTONPrintHist()
{
CPaintDC dc(this);

//获取直方图绘制静态框的矩形区域

CRect clientRect;
GetDlgItem(IDC_STATIC_HeightHist)->GetWindowRect(&clientRect);
ScreenToClient(&clientRect);
// BeginWaitCursor();

//画背景

dc.SelectStockObject(NULL_BRUSH);

dc.Rectangle(clientRect.left,clientRect.top-5,clientRect.right,clientRect.bottom+1);//【是否问题出在参数设置上?】

//画直方图灰度频率与直方图绘制矩形区域比例关系,画直方图
long maxNumOneSect=0; //m_SectionNum是划分的级别数量,maxNumOneSect是某级别中的最大值

for(i=0;i<m_SectionNum;i++)
{
if(*(p_NumPerSection+i)>maxNumOneSect)
maxNumOneSect=*(p_NumPerSection+i);
}

DWORD *bufTemp=NULL;
bufTemp=new DWORD[m_SectionNum];
double x=clientRect.Height();
for(i=0;i<m_SectionNum;i++)
{
*(bufTemp+i)=(unsigned long)((float)(*(p_NumPerSection+i))*x/maxNumOneSect);
}
for(i=clientRect.left;i<=clientRect.right;i++)
{
dc.MoveTo(i,clientRect.bottom);
dc.LineTo(i,clientRect.bottom-*(bufTemp+i-clientRect.left));
}

CString str;
SetBkMode(dc,1);
str.Format("%ld",m_zMin);
dc.TextOut(clientRect.left,clientRect.bottom+1,str);
str.Format("%ld",m_zMax);
dc.TextOut(clientRect.left+m_SectionNum,clientRect.bottom+1,str);

// EndWaitCursor();

}
备注:忘了说了,高程直方图和图像的灰度直方图类似,是将点云三维坐标的Z坐标当做是灰度那一维来参与统计。可根据实际设定来划分若干等级,而非灰度的256等级。

我写这部分代码参考的是图像灰度直方图的代码,可能改的时候会存在问题,希望您一并指出。谢谢!
展开
 我来答
bhtzu
2013-11-09 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4192万
展开全部
bdhming说的对,首先要改成CClientDC dc(this);
其次,如果使用Picture控件,那么需要用控件的dc绘图。对你这个,这样会比较繁琐没必要。
删除IDC_STATIC_HeightHist这个控件,在相同位置放置一个静态框(无边、disable),修改静态框的ID为IDC_STATIC_HeightHist,这样你这段代码显示就没有问题了。
来自:求助得到的回答
归悦欣cf
2013-11-08 · TA获得超过1443个赞
知道大有可为答主
回答量:4250
采纳率:59%
帮助的人:1320万
展开全部
CPaintDC dc(this);试一试改成CClientDC dc(this);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式