I.Introduction
Trong bài này mình xin chia sẽ cách vẽ một Ellipse và chèn hình vào trong Ellipse đó với MFC.
II.Creating Project And Coding
Fire Up VS C++ 6.0 And Create MFC AppWizard và đặt tên là DrawingBitmapImageEllipse
–> Chọn Single Document –> Finish![]()
Tiếp theo các bạn vào Lớp CDrawingBitmapImageInEllipseView –> Chọn Hàm OnDraw
Trước xử lý Việc Vẽ Ellipse chúng ta Insert Bitmap image vào Project ![]()
Click phải chuột và chọn Insert
Tiếp theo Hộp thoại Insert hiện ra các bạn chọn BitMap và chọn Import, sau đó Browse tới file Bitmap(bmp) mà bạn thích.
Sau khi import hình xong cái bạn thấy trong Tag ResourceView sẽ tự sinh một Folder tên Bitmap, và trong đó sẽ chứa một file có tên là IDB_Bitmap1![]()
Tiếp theo các bạn click phải chuột vào IDB_BITMAP1 và chọn Properties
Rename ID lại theo ý mình, ở đây mình Rename thành IDB_Avata
Bây giờ chúng ta thử Viết Code Vẽ Image vừa chọn vào ellipse, các bạn vào hàm OnDraw và Xử lý nó theo đạon Code sau:
void CDrawingBitmapImageInEllipseView::OnDraw(CDC* pDC)
{
CClientDC dc(this);
CRect rect ;
GetClientRect(&rect);
// Load Image
CBitmap bitmap ;
bitmap.LoadBitmap(IDB_Avata);
CBrush brush ;
brush.CreatePatternBrush(&bitmap);
CBrush *pOldBrush = dc.SelectObject(&brush);
dc.Ellipse(rect);
// Huy~ doi tuong Brush
brush.DeleteObject();
}
Bây giờ chúng ta thử Run Application(Ctrl + F5) để xem hết quả:
Bây giờ chúng ta muốn sửa đổi lại một tí, là vẽ hình Tứ giác trong Ellipse và chèn hình vào đó, các bạn tùy chỉnh Code lại một tí:
void CDrawingBitmapImageInEllipseView::OnDraw(CDC* pDC)
{
CClientDC dc(this);
CRect rect ;
GetClientRect(&rect);
// Load Image
CBitmap bitmap ;
bitmap.LoadBitmap(IDB_Avata);
// Tuy chinh Backgruond mau do cho Ellipse
CBrush EBrush(RGB(255,0,0));
CBrush *pEBrush = dc.SelectObject(&EBrush);
dc.Ellipse(rect);
CBrush brush ;
brush.CreatePatternBrush(&bitmap);
POINT _Point[5] = {
rect.Width()/2,rect.top,
rect.left,rect.Height()/2,
rect.Width()/2,rect.bottom,
rect.right,rect.Height()/2,
rect.Width()/2,rect.top
};
CBrush *pOldBrush = dc.SelectObject(&brush);
dc.Polygon(_Point,5);
// Huy~ doi tuong Brush
brush.DeleteObject();
EBrush.DeleteObject();
}
Run Application và xem kết quả
Đc đấy chú cố gắn phát huy …mà ghi rõ công dụng từng dòng code cho dễ hiểu ….thank ^^
LikeLike
kekeke a có ghi chú đó ! chú ko hiểu dòng nào thì PM anh nha kakak
LikeLike
Well-done! Try more… Anyway, Thank you! ^^
LikeLike