Sample Draw Text With MFC

I.Introduction

Trong bài này mình xin chia sẻ cách vẽ một đoạn Text theo quỹ đạo tròng trong MFC

II.Creating Project And Coding

Các bạn mở VS C++ 6.0 lên và tạo MFC Project

image

Sau khi tạo Project các bạn vào Hàm OnPain() và xử lý :

   1: void CChildView::OnPaint() 

   2: {

   3:     CPaintDC dc(this); 

   4:     CRect rect ;

   5:     GetClientRect(&rect);

   6:  

   7:     dc.SetViewportOrg(rect.Width()/2,rect.Height()/2);

   8:     dc.SetBkMode(TRANSPARENT);

   9:     

  10:     srand(time(0));

  11:     for(int i = 0; i < 3600 ; i += 150)

  12:     {

  13:         LOGFONT lf;

  14:         ::ZeroMemory(&lf,sizeof(lf));

  15:  

  16:         COLORREF color = RGB(rand()%255,rand()%255,rand()%255);

  17:         lf.lfHeight = 160;

  18:         lf.lfWeight = FW_BOLD;

  19:         lf.lfEscapement = i;

  20:         lf.lfOrientation = i;

  21:         lstrcpy(lf.lfFaceName,_T("Arial"));

  22:         CFont font;

  23:         font.CreatePointFontIndirect(&lf);

  24:  

  25:         CFont* pOldFone = dc.SelectObject(&font);

  26:         dc.SetTextColor(color);

  27:         dc.TextOut(0,0,CString(_T("             Hello,MFC")));

  28:         dc.SelectObject(pOldFone);

  29:     }

  30:  

  31: }

Run Application (ctrl + F5) và xem kết quả

image

Mình xin giải thích một tí về code trong hàm OnPaint():

dc.SetViewportOrg(rect.Width()/2,rect.Height()/2) : hàm này giúp cho ứng dụng Set tọa độ ban đầu của Text là 0,0 nhưng ở giữa khung ngữ cảnh(theo bình thường thì tọa độ 0,0 ở góc trái trên).

LOGFONT : chứa các thuộc tính của Font Unicode, các bạn có thể tham khảo cụ thể hơn ở thư viện MSDN

   1: typedef struct tagLOGFONT {

   2:     LONG lfHeight;

   3:     LONG lfWidth;

   4:     LONG lfEscapement;

   5:     LONG lfOrientation;

   6:     LONG lfWeight;

   7:     BYTE lfItalic;

   8:     BYTE lfUnderline;

   9:     BYTE lfStrikeOut;

  10:     BYTE lfCharSet;

  11:     BYTE lfOutPrecision;

  12:     BYTE lfClipPrecision;

  13:     BYTE lfQuality;

  14:     BYTE lfPitchAndFamily;

  15:     TCHAR lfFaceName[LF_FACESIZE];

  16: } LOGFONT;

CFont font;

font.CreatePointFontIndirect(&lf);

Đoạn code trên mang ngữ nghĩa, là Đưa các thuộc tính LOGFONT đã khởi tạo ở trên vào biến font, nhằm xác định các thuộc tính cần thiết cho đoạn Text khi vẽ ra ngoài.

/*Life Run On Code*/

Leave a comment