MFC旋转字体的一些问题

 

第一行总得说点什么,但是我不知道说啥,有啥不懂的看注释吧。

 



        CRect rect;
	GetClientRect(&rect);//???????????
	int w = rect.Width()/2;
	int h = rect.Height()/2;
	CPoint center(w,h); // ????
	int x = center.x;	//???????????
	int y = center.y;
	
	CString str1;
	str1 = "              我是菜鸟";
	int firstAngle = 900;

	CFont *f_old;//和刚刚一样,把系统最开始的写字笔赋值给f_old
	LOGFONT lf;//定义一个LOGFPNT类型的lf变量
	pDC->GetCurrentFont()->GetLogFont(&lf);//得到系统当前字体类型,存到变量lf中
	
	strcpy(lf.lfFaceName,"宋体"); //我刚刚没加这行,结果只显示了四种情况
	
	CFont font; //创建写字笔
	font.CreateFontIndirect(&lf);//让lf的类型 赋值给font这根写字笔
	f_old = pDC->SelectObject(&font);
	
	int i ;
	for(i=0;i<=24;i++)
	{
		lf.lfEscapement = firstAngle;
		//firstAngle = firstAngle + 150;
		firstAngle += 150;
		font.Detach();//字体分离,这句话很重要!!!因为下面要创建新字体了
		font.CreateFontIndirect(&lf);//让lf的类型 赋值给font这根写字笔
		pDC->SelectObject(&font);
		pDC->TextOut(x,y,str1);
	}

	pDC->SelectObject(f_old);//即还原成系统原始的写字笔

 

    strcpy(lf.lfFaceName,"宋体"); //我刚刚没加这行,结果只显示了四种情况,如下:


    我花了半个多小时,慢慢调试,把代码拷贝到老师电脑,又拷贝到同学电脑,还是运行失败,还好这种事情我经常遇到,心态还行,没有爆炸,吐槽一下VC6.0这个编译器吧,太蠢了。不过没办法,这软件年纪跟我差不多,现在跟别的编译器比起来智商不够也可以理解。

   后来那行代码加上去了,结果为:

   

总结:

      心态很重要,没有良好的心态我根本发现不了这个问题。

      刚刚老师给我的理由是我操作系统或者编译器的问题,我总觉得哪里怪怪的,不想放弃自己的代码,果然,稀里糊涂试到了那个bug。

      后来跟老师讲我发现的这个bug,老师好像发现了新大陆一般,也觉得很神奇。

      不过我想说,明年给学弟学妹讲课,可不可以升级到VS2015或者2018?

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值