我有一个.csv文件,里面有2组数据,分别对应x,y值,x数组(0,1,2,……500),y数组(151,150,150,。。)x,y散点图就是一条连续的曲线。现在要把这些数据存入到一个bmp文件中生成图片,640*480的图,怎么写程序啊。求详细,答得好再加分。
void CDlgTestRead::OnBnClickedOk()
{
UCHAR* pSrc = NULL;
int iImageWidth = 0;
int iImageHeight= 0;
pSrc = GetImagePtr(m_pFvxImageRead);
m_pFvxImageRead->ClearImage();
iImageHeight=m_pFvxImageRead->ImageHeight;
iImageWidth =m_pFvxImageRead->ImageWidth;
//////////////////////////////////////////////////////////////////////////
在这里添加程序
//////////////////////////////////////////////////////////////////////////
m_file->FilePath = "d:\\1.bmp";
m_file->SaveBitmap(m_pFvxImageRead);
OnOK();
}
前面还有个初始化
BOOL CDlgTestRead::OnInitDialog()
{
CDialog::OnInitDialog();
CoInitialize(NULL);
m_pFvxImageRead.CreateInstance(__uuidof(FvxImage));
m_file.CreateInstance(__uuidof(FvxFileAccess));
m_pFvxImageRead->ImageWidth = 640;
m_pFvxImageRead->ImageHeight = 480;
return TRUE;
说是先把二维的数据变成一维的,比如(x,y)就变成y*m-imagewidth+x.
vc++中把2个数组的数据生成到一个bmp文件里成为图片。
答案:1 悬赏:60 手机版
解决时间 2021-02-07 16:21
- 提问者网友:人生佛魔见
- 2021-02-06 23:13
最佳答案
- 五星知识达人网友:神鬼未生
- 2021-02-06 23:41
给你提供一下明确的思路吧。
第一个方法比较麻烦,地址写值。LPDIBMAP指针可以获得位图数据,这个位图数据就是x*y*sizeof(RGB)大小的指针。可以通过CSV读取到的X/Y值,计算XY位移,然后进行sizeof(RGB)大小的memcopy复制一个固定RGB值进去就可以了。其实代码不多,但。。指针操作要求稍高。
第二个方法推荐使用。
资源中创建一个640*480位图资源,纯色的。
然后在你的CDlgTestRead的对应响应函数中,
1·创建内存DC CreateCompatibleDC(memDC);
2·导入资源位图: bmp.LoadBitmap(IDB_BITMAP1);
3·选位图到DC:memDC.SelectObject(&bmp);
4·在内存DC上面,根据CSV的数据画线(循环)MoveTo..LineTo
5·memDC.SelectObject(oldBmp);
6·保存bmp到文件就可以了。
第一个方法比较麻烦,地址写值。LPDIBMAP指针可以获得位图数据,这个位图数据就是x*y*sizeof(RGB)大小的指针。可以通过CSV读取到的X/Y值,计算XY位移,然后进行sizeof(RGB)大小的memcopy复制一个固定RGB值进去就可以了。其实代码不多,但。。指针操作要求稍高。
第二个方法推荐使用。
资源中创建一个640*480位图资源,纯色的。
然后在你的CDlgTestRead的对应响应函数中,
1·创建内存DC CreateCompatibleDC(memDC);
2·导入资源位图: bmp.LoadBitmap(IDB_BITMAP1);
3·选位图到DC:memDC.SelectObject(&bmp);
4·在内存DC上面,根据CSV的数据画线(循环)MoveTo..LineTo
5·memDC.SelectObject(oldBmp);
6·保存bmp到文件就可以了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯