您的位置:程序门 -> vc/mfc -> 界面



怎样把自己在兼容dc中画的图保存成位图???


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


怎样把自己在兼容dc中画的图保存成位图???
发表于:2007-03-21 19:40:33 楼主
我近日想把自己以前写的程序修改,程序中的数据是采集卡采集的数据,目的要把这些是数据画成坐标图。但是数据量很大,我以前用cscrollview做的,界面不是很好看,想改用对话框,就要在图片控件中加滚动条,网上有打开一副位图并显示在加滚动条的图片控件中的程序,所以想请教如何把自己画的图保存成位图????
发表于:2007-03-21 20:31:151楼 得分:0
先创建位图文件,按照位图的格式逐项把内容写进去,再关闭文件
发表于:2007-03-21 20:40:572楼 得分:0
ool   zimage::win::savedctobmpstream(hdc   hdc,const   cimgrect&   saverect,bool   bvertinvert,ude::istream*   pstream)
{
zimg_assert(pstream!=null);
bool   bret=false;
if(hdc!=null){
bitmapinfoheader   bmpi;
zeromemory(&bmpi,sizeof(bitmapinfoheader));
bmpi.biheight=saverect.height();
bmpi.biwidth=saverect.width();
bmpi.bibitcount=24;
bmpi.bicompression=bi_rgb;
bmpi.bisize=sizeof(bmpi);
bmpi.biplanes=1;

dword*   pbits=null;
hbitmap   hbmp=createdibsection(hdc,(const   bitmapinfo*)&bmpi,dib_rgb_colors,
(lpvoid*)&pbits,null,0);
if(hbmp!=null){
hdc   htmpdc=::createcompatibledc(null);
hgdiobj   holdobj=selectobject(htmpdc,hbmp);
bitblt(htmpdc,0,0,saverect.width(),saverect.height(),hdc,saverect.left,saverect.top,srccopy);

bitmapfileheader   bmpfh;
zeromemory(&bmpfh,sizeof(bitmapfileheader));
bmpfh.bftype=0x4d42;
bmpfh.bfoffbits=sizeof(bitmapfileheader)+sizeof(bitmapinfoheader);
bmpfh.bfsize=sizeof(bitmapfileheader)+sizeof(bitmapinfoheader);

pstream-> write(&bmpfh,sizeof(bitmapfileheader));
if(!bvertinvert)
bmpi.biheight=-bmpi.biheight;
pstream-> write(&bmpi,sizeof(bitmapinfoheader));
byte*   pbbytes=(byte*)pbits;
size_type   nrowsize=bmpi.biwidth*3;
size_type   nalignrowbytesize=nrowsize+((bitsperbyte*nwinbmprowalignment)-1)/bitsperbyte;
for(size_type   i=0;i <(size_type)saverect.height();i++){
pstream-> write(pbbytes+nalignrowbytesize*i,nalignrowbytesize);
}
//invert   write   failed   on   final   output,why?
//for(size_type   i=0;i <(size_type)saverect.height();i++){
// pstream-> write(pbbytes+nalignrowbytesize*(saverect.height()-i-1),nalignrowbytesize);
//}
bret=true;
}
deleteobject(hbmp);
}
return   bret;
}
发表于:2007-03-21 21:37:253楼 得分:0
多谢kimryo给出详细的代码!!!
发表于:2007-03-21 22:48:244楼 得分:0
完了,看到代码就晕现在
发表于:2007-03-26 15:41:315楼 得分:0
是吗
发表于:2007-03-26 15:49:096楼 得分:0
mark
这段代码有的用了
发表于:2007-03-27 11:33:387楼 得分:0
看这个你就明白了:http://blog.chinaunix.net/u/32550/showart_254615.html


快速检索

最新资讯
热门点击