您的位置:程序门 -> vc/mfc -> 图形处理/算法



在对话框里显示一副位图的问题,菜鸟急问!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


在对话框里显示一副位图的问题,菜鸟急问!
发表于:2007-05-05 17:17:09 楼主
刚学vc.net,想在对话框里显示一个图象的直方图,编译通过,但运行后看不到图,函数如下:    

bool   dividevalue::oninitdialog()
{
cdialog::oninitdialog();//   调用默认oninitdialog函数

cwnd*   pwnd   =   getdlgitem(idc_coordd);//   获取绘制直方图的指针,idc_coordd为text   control控件
cdc*   pdc   =   pwnd-> getdc();//   指针

struct imageparament   p;
long pg[256];
getimageparament(pimg[1],&p);//取得图象的参数
 
  histogram(pimg[1],0,0,p.nwidth,p.nheight,pg);//得到图象直方图数组
 
createhistogram(pimg[2],pg,120,0,0);//在位图cimage里画出直方图
pimg[2]-> bitblt(pdc-> m_hdc,10,10,256+20,150,0,0,srccopy);//显示直方图;不知是不是这里出了问题,不能把图象复制到text   control控件里面??
return   true;
}


如能解答,不胜感激~
发表于:2007-05-05 21:19:091楼 得分:0
如果代码没有错误的话,放到dividevalue::onpaint()中,或者重载一个static控件,在里面绘制。
不要用edit控件来绘图。
发表于:2007-05-05 21:56:402楼 得分:0
void   dividevalue::onpaint()  
{
cwnd*   pwnd   =   getdlgitem(idc_coordd);//   获取绘制直方图的指针
cdc*   pdc   =   pwnd-> getdc();//   指针

//cpen*   ppenblue   =   new   cpen;//   创建画笔对象
//ppenblue-> createpen(ps_solid,2,rgb(0,0,255));//   蓝色画笔
                  //cgdiobject*   poldpen   =   pdc-> selectobject(ppenblack);

//pdc-> moveto(10,15);//   绘制坐标轴
//pdc-> lineto(10,280);//   垂直轴

struct imageparament   p;
long pg[256];

getimageparament(pimg[1],&p);
 
  histogram(pimg[1],0,0,p.nwidth,p.nheight,pg);
 
createhistogram(pimg[2],pg,120,0,0);
pimg[2]-> bitblt(pdc-> m_hdc,10,10,256+20,150,0,0,srccopy);
}

也不行啊,启动调试的时候,发现参数p和图象直方图数组都能正确得到,就是显示不出东西;尝试用pdc-> lineto(10,280)也都画不出东西,郁闷啊~~


快速检索

最新资讯
热门点击