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 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误