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?

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章