HONGSHIYA 2013-10-18 03:19 采纳率: 0%
浏览 888

谁能帮忙把这个VC++程序上运行的纵坐标改动一下啊,跪求,急用……

把第一个纵坐标改成0-20,第二个改成0-500,现在不能改动,而且已改动两个都会同时变化,且图形并不随改动值的变化而变化,急用,跪求了……不胜感激……
void CScope::DrawAxis(CDC *pDC)
{
CFont *pOldFont;
int i,nPosY;
CString str;
pOldFont = pDC->SelectObject(&m_FontAxis);
pDC->SetTextColor(RGB(255,255,0));
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextAlign(TA_RIGHT|TA_BASELINE);
int nCenterY = m_rectCurve.top+(int)((double)m_nBase/(double)m_nRange*m_rectCurve.Height());
nPosY = nCenterY;
if(nPosY<=m_rectCurve.top+10)
nPosY += 10;
if(m_dDimY pDC->TextOut(m_rectCurve.left-2,nPosY,CString("0.0"));
else
pDC->TextOut(m_rectCurve.left-2,nPosY,CString("0"));

for(i=1;i<=14;i++)
{
    nPosY =nCenterY+i*m_rectCurve.Height()/14;
    if(nPosY<=m_rectCurve.bottom)
    {
        if(m_dDimY<1)
            str.Format("%.1f",-i*m_dDimY);
        else if(m_dDimY<1000)
            str.Format("%.0f",-i*m_dDimY);
        else
            str.Format("%.0fK",-i*m_dDimY/1000);
        pDC->TextOut(m_rectCurve.left-2,nPosY,str);
    }
}

for(i=1;i<=14;i++)
{
    nPosY = nCenterY-i*m_rectCurve.Height()/14;
    if(nPosY>=m_rectCurve.top)
    {
        if(nPosY<=m_rectCurve.top+10)
            nPosY += 10;
        if(m_dDimY<1)
            str.Format("%.1f",i*m_dDimY);
        else if(m_dDimY<1000)
            str.Format("%.0f",i*m_dDimY);
        else
            str.Format("%.0fK",i*m_dDimY/1000);
        pDC->TextOut(m_rectCurve.left-2,nPosY,str);
    }
}


//横坐标
pDC->SetTextAlign(TA_LEFT|TA_TOP);
pDC->TextOut(m_rectCurve.left,m_rectCurve.bottom+2,CString("0"));
pDC->SetTextAlign(TA_CENTER|TA_TOP);
for(i=1;i<=13;i++)
{
    str.Format("%.0f",2*i*m_dDimT);
    pDC->TextOut(m_rectCurve.left+i*m_rectCurve.Width()/14,m_rectCurve.bottom+2,str);
}

pDC->SetTextAlign(TA_RIGHT|TA_TOP);
//str.Format("%.0f",2*14*m_dDimT);
str.Format("T(s)");
pDC->TextOut(m_rectCurve.right+4,m_rectCurve.bottom+2,str);
pDC->SelectObject(&pOldFont);

}

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-02-26 11:15
    关注

    该回答引用ChatGPT

    把第一个纵坐标改成0-20,第二个改成0-500需要进行如下步骤:

    • 找到变量m_dDimY,它控制纵坐标的范围。

    • 找到变量m_nBase和m_nRange,它们决定纵坐标显示的位置。

    • 修改m_dDimY的值,使其从原来的范围(0-10)变成新的范围(0-20)。

    • 修改m_nBase的值,使其从原来的位置(m_rectCurve.bottom)变成新的位置(m_rectCurve.bottom - m_nRange * 20 / m_dDimY)。

    • 修改m_nRange的值,使其从原来的范围(10)变成新的范围(20)。

    • 找到显示纵坐标刻度的代码块,在其中的格式化字符串语句中,将除数从原来的1改成2,从而保持显示的值正确。

    • 找到显示横坐标的代码块,将格式化字符串语句中的数值范围从原来的(0-28)改成新的范围(0-26)。

    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序