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?

 

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