C++--〉Pascal翻译(关于图像编程的)!(100分)

  • 主题发起人 主题发起人 浏阳人
  • 开始时间 开始时间

浏阳人

Unregistered / Unconfirmed
GUEST, unregistred user!
关于图像编程的C++--〉delphi翻译!

lpSrc = (unsigned char *)lpDIBBits 如何翻译为PASCAL语句

其中
BYTE * lpSrc;
// 指向源图像的指针
LPBYTE lpDIBBits = pDib->m_lpImage;
//图像数据的指针


完整的代码段落如下,如果哪位大虾能帮我全段翻译为PASCAL那

自然更好咯!
/*******************************************************

******************
*
* 函数名称:
* DIBMOMENT()
*
* 参数:
* CDib * pDib - 指向CDib类的指针
*
* 返回值:
* BOOL - 成功返回True,否则返回False。
*
* 说明:
* 该函数计算图象的力矩。
*
********************************************************

*****************/
BOOL DIBMOMENT(CDib *pDib)
{
// 指向源图像的指针
BYTE * lpSrc;

//图象的宽度和高度
LONG lWidth;
LONG lHeight;

// 图像每行的字节数
LONG lLineBytes;

//得到图象的宽度和高度
CSize SizeDim;
SizeDim = pDib->GetDimensions();
lWidth = SizeDim.cx;
lHeight = SizeDim.cy;

//得到实际的Dib图象存储大小
CSize SizeRealDim;
SizeRealDim = pDib->GetDibSaveDim();

// 计算图像每行的字节数
lLineBytes = SizeRealDim.cx;

//图像数据的指针
LPBYTE lpDIBBits = pDib->m_lpImage;

// 图象的矩
long nImageMoment[10];

// 循环变量
int i,j;

int ip,jq;

int

pq[10][2]={{0,0},{0,1},{1,0},{0,2},{1,1},{2,0},{0,3},{1,

2},{2,1},{3,0}};
CString CViewNum;
CViewNum="";
for(int k=0;k<10;k++)
{
ip=pq[k][0];
jq=pq[k][1];
nImageMoment[k]=0;

// 临时变量
double temp;

// 计算ip+jq阶矩

// 力矩的计算
for (j = 0
j < lHeight
j++)
{
for(i = 0
i < lWidth
i++)
{
lpSrc = (unsigned char

*)lpDIBBits + lLineBytes * j + i;

temp =

pow((double)i,ip)*pow(double(j),jq);
temp = temp * (*lpSrc);



nImageMoment[k]=nImageMoment[k] + (int)temp;
}
}
CString CView;
CView.Format("图象的(%d,%d)阶力矩为:%d


",ip,jq,nImageMoment[k]);
CViewNum+=CView;
}
// 将结果进行输出

MessageBox(NULL,CViewNum, "计算结果" ,

MB_ICONINFORMATION | MB_OK);
return true;
}

急用!!
 
lpSrc = (unsigned char *)lpDIBBits 就是强制转化为无符号字符指针
等价于PASCAL的
lpSrc := PChar(lpDIBBits)

 
没有 CDib 的定义,很难得到准确的翻译。
 
后退
顶部