Drawing Bitmap Image in Ellipse in MFC

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

image

–> Chọn Single Document –> Finishimage

Tiếp theo các bạn vào Lớp CDrawingBitmapImageInEllipseView –> Chọn Hàm OnDraw

image

Trước xử lý Việc Vẽ Ellipse chúng ta Insert Bitmap image vào Project image

Click phải chuột và chọn Insert

image

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.

image

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_Bitmap1image

Tiếp theo các bạn click phải chuột vào IDB_BITMAP1 và chọn Properties

image

Rename ID lại theo ý mình, ở đây mình Rename thành IDB_Avata

image

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ả:

image

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ả

image

3 thoughts on “Drawing Bitmap Image in Ellipse in MFC

Leave a reply to Jack Black Cancel reply