求教C++图形处理的一些小问题

hl_cx 2012-03-09 01:13:38
本人模仿别人的代码,从数据库里读数据然后画了一条曲线图。画完发现图形是倒过来的。请问应该如何将图形正过来呢?
画布的大小是550,450.画图代码如下:
//连接数据库
ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
//设置SELECT语句
_bstr_t vSQL;
vSQL = "select p_id%1024 as id,p_value from tb_pdatavalue where p_id%1024<=512 and p_id%1024<>0";
//执行SELECT语句
_RecordsetPtr m_pRecordset;
m_pRecordset = m_AdoConn.GetRecordSet(vSQL);

RECT fillrect;
_variant_t mo;
int xx, yy;
int yp = TrafficDrawRectangle.bottom;
int nLastMo=0,nLastID=0;
while( m_pRecordset->adoEOF == 0 ) //EOF判断是否到末尾
{
mo = m_pRecordset->GetCollect( "id" );
xx = atoi( (char *)_bstr_t(mo) );
mo = m_pRecordset->GetCollect( "p_value" );
yy = atoi( (char *)_bstr_t(mo) );

fillrect.bottom = yy - 1;
fillrect.top = yy;
fillrect.left = xx;
fillrect.right = xx + plotgranularity;

//以下代码是进行连线的代码
if( bFirstPoint )
{
nLastMo = yy;
nLastID = xx;
bFirstPoint = FALSE;
continue;
}
MemDC->MoveTo( nLastID, nLastMo );
MemDC->LineTo( xx, yy );

nLastMo = yy;
nLastID = xx;
m_pRecordset->MoveNext();
}
//断开与数据库的连接
m_AdoConn.ExitConnect();
请问MemDC->MoveTo()这里应该怎么改,才能将图形反转过来,主要就是因为画布的左上角坐标是(0,0)导致的?
另外我还有一个小问题,我在用开放函数的时候,发现结果是double,我怎么能把结果编程保留6位小数的浮点型呢?代码如下:
float modulo;
modulo = sqrt(xreal[i]*xreal[i] + ximag[i]*ximag[i]);
...全文
72 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
greatoo_cx 2012-03-09
  • 打赏
  • 举报
回复
第一个问题,
int yp = TrafficDrawRectangle.bottom;//yp是画布的高度
MemDC->MoveTo( nLastID, yp-nLastMo );
MemDC->LineTo( xx, yp-yy );
hl_cx 2012-03-09
  • 打赏
  • 举报
回复
第一个问题我已经解决了,请问第二个问题要怎么处理呢????
Jim_King_2000 2012-03-09
  • 打赏
  • 举报
回复
修改Windows窗口映射。
hl_cx 2012-03-09
  • 打赏
  • 举报
回复
请高手指点,谢谢了!!!
hl_cx 2012-03-09
  • 打赏
  • 举报
回复
修正一下第二个问题:
我在用开方函数的时候,发现结果是double,我怎么能把结果编程保留6位小数的浮点型呢?代码如下:
float modulo;
float xreal[N/2],ximag[N/2];
modulo = sqrt(xreal[i]*xreal[i] + ximag[i]*ximag[i]);
我想让modulo保留小数点后6位,提高复数模的精度,代码应该怎么修改呢?请高手指点,谢谢!

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧