转动的问题。求解。大虾请进。算法。急。求大神帮忙。要不死定了。

编程小白_大场 2013-02-20 09:42:13
现在出现的问题是:他在转动的时候。是位置没有计算好吗?,还是区域没有弄对呀。算法难吗?对我来说算是难的。还没有接触过算法。现在在保证字体大小的情况下。让他转起来,字体在下方。
出现的问题:

想要的效果:
在转起来的时候也要像这张图。

求解。
代码给你们贴出一部分来。

void CMyButton::DrawItem(LPDRAWITEMSTRUCT lp) 
{
//m_image.Draw(lp->hDC,lp->rcItem,NULL,true);

CDC *pDC=CDC::FromHandle(lp->hDC);

CRect rc1= lp->rcItem;
if(m_fontFlag==1)
{
}
else
{
if(rc1.Width()<rc1.Height())
rc1.bottom = rc1.top + rc1.Width();
if(rc1.Height()<rc1.Width())
rc1.right = rc1.left + rc1.Height();
}
m_image.Draw(pDC->m_hDC,rc1,NULL,true);

CRect rc;

GetClientRect(&rc);
//ÉèÖÃ×ÖÌåArial Bold
CFont font;
font.CreatePointFont(90,CURFONT);

pDC->SelectObject(font);
CString text ;

GetWindowText(text);

pDC->SetBkMode(TRANSPARENT);

pDC->SetTextColor(RGB(255,255,255));

//DWORD style=DT_SINGLELINE| DT_VCENTER| DT_CENTER;

if(m_fontFlag==1)
style=DT_VCENTER|DT_SINGLELINE|DT_CENTER;
else
style=DT_BOTTOM|DT_SINGLELINE| DT_CENTER;
//ÍùÉÏ»­ÎÄ×Ö

//rc.top=rc1.top*1.2;
pDC->DrawText(text,-1,&rc,style);//---这个地方应该怎么样算呢。

我的想法是,整个矩形的高,是图片的高+图片的20%,这样还是不行。
因为在画的时候,已经有图片的高度了。和已经定义好的,矩形高度。可是在转的时候就出现这样的问题,字跑到了图片的上边。
求解,难道是我想错了。不知道是什么原因。

}
注释都是乱码。英文的系统。
...全文
196 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 12 楼 sadasasdasd 的回复:
引用 11 楼 sadasasdasd 的回复:引用 10 楼 schlafenhamster 的回复:SetWindowPos(NULL,pt.x,pt.y,cx,cy,SWP_NOCOPYBITS); cy 要包含 文字 高度 噢,我试试。谢谢。呵呵。 谢谢,你,非常感谢。好好了,好了,马上结帐。都给你。呵呵。
初学者,好多的概念都还不太懂。呵呵。
  • 打赏
  • 举报
回复
引用 11 楼 sadasasdasd 的回复:
引用 10 楼 schlafenhamster 的回复:SetWindowPos(NULL,pt.x,pt.y,cx,cy,SWP_NOCOPYBITS); cy 要包含 文字 高度 噢,我试试。谢谢。呵呵。
谢谢,你,非常感谢。好好了,好了,马上结帐。都给你。呵呵。
  • 打赏
  • 举报
回复
引用 10 楼 schlafenhamster 的回复:
SetWindowPos(NULL,pt.x,pt.y,cx,cy,SWP_NOCOPYBITS); cy 要包含 文字 高度
噢,我试试。谢谢。呵呵。
schlafenhamster 2013-02-20
  • 打赏
  • 举报
回复
SetWindowPos(NULL,pt.x,pt.y,cx,cy,SWP_NOCOPYBITS); cy 要包含 文字 高度
schlafenhamster 2013-02-20
  • 打赏
  • 举报
回复
那就是 7个 长方形的 大小不一的 按钮。
  • 打赏
  • 举报
回复
引用 7 楼 schlafenhamster 的回复:
Step() 一次移动 几个? 移动的 什么东西 CRect ?Picture ?CStatic ?
七个按钮。
schlafenhamster 2013-02-20
  • 打赏
  • 举报
回复
Step() 一次移动 几个? 移动的 什么东西 CRect ?Picture ?CStatic ?
  • 打赏
  • 举报
回复
引用 5 楼 sadasasdasd 的回复:
引用 4 楼 schlafenhamster 的回复:CRect rc; GetClientRect(&amp;rc); pDC->DrawText(text,-1,&amp;rc,style);//这句使 文字 固定在 一个地方。 我想 应该 还使用 CRect rc1= lp->rcItem; 只是 每项 的 rcItem 应该是个 长方形……
void CMyButton::Step() { m_cur++; if(m_cur >= m_num) m_cur = 0; //É趨´óС£¬Ô²ÐÄ£¨400£¬350£© point &pt = m_point[m_cur]; double ver = pt.y - 350; int cx = 120 + (int)(ver / 3); SetWindowPos(NULL,pt.x,pt.y,cx,cx,SWP_NOCOPYBITS); //SetWindowPos(NULL,pt.x,pt.y,cx,cx,SWP_NOSIZE|SWP_NOCOPYBITS|SWP_NOZORDER); //MoveWindow(NULL,pt.x,pt.y,cx,cx); } 这是移动的算法。试试了好多的办法了,还是不行呀。求解呀。大哥。
  • 打赏
  • 举报
回复
引用 4 楼 schlafenhamster 的回复:
CRect rc; GetClientRect(&rc); pDC->DrawText(text,-1,&rc,style);//这句使 文字 固定在 一个地方。 我想 应该 还使用 CRect rc1= lp->rcItem; 只是 每项 的 rcItem 应该是个 长方形 下面 可以 写 文字;
是的,可是写上字之后就像在第二副图上了。 运行起来就只有图片的矩形区域,没有整个矩形的区域。不解呀。
schlafenhamster 2013-02-20
  • 打赏
  • 举报
回复
CRect rc; GetClientRect(&rc); pDC->DrawText(text,-1,&rc,style);//这句使 文字 固定在 一个地方。 我想 应该 还使用 CRect rc1= lp->rcItem; 只是 每项 的 rcItem 应该是个 长方形 下面 可以 写 文字;
  • 打赏
  • 举报
回复
引用 2 楼 schlafenhamster 的回复:
好像 字的 大小是 固定的,园的大小是 变的?
是的,应该怎么改呢?
schlafenhamster 2013-02-20
  • 打赏
  • 举报
回复
好像 字的 大小是 固定的,园的大小是 变的?
  • 打赏
  • 举报
回复
要沉了吗?希望不要沉呀。大神呢。

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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