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
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ả
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*/