#include #include //-------------------------------------------------------------------- void FillWithBitmap(CDC *pDC, CBitmap &Bmp) //-------------------------------------------------------------------- { CDC dcImage; CRect R; CPoint pt; BITMAP info; CGdiObject *oldObj; Bmp.GetBitmap(&info); (pDC->GetWindow())->GetClientRect(R); dcImage.CreateCompatibleDC(pDC); oldObj = dcImage.SelectObject(&Bmp); //Kopioi kuvaa koko alueelle for(pt.x=0; pt.x < R.Width(); pt.x+=info.bmWidth) for(pt.y=0; pt.y < R.Height(); pt.y+=info.bmHeight) pDC->BitBlt(pt.x,pt.y,info.bmWidth,info.bmHeight,&dcImage,0,0,SRCCOPY); dcImage.SelectObject(oldObj); }; //********************************************************************************************* class COmaWin : public CFrameWnd //********************************************************************************************* { CBitmap m_bmpUkko; public: COmaWin() { Create(NULL,"Bitmap Test"); CreateUkkoBitmap(); }; virtual ~COmaWin() { m_bmpUkko.DeleteObject(); }; afx_msg BOOL OnEraseBkgnd( CDC* pDC ); int CreateUkkoBitmap(); DECLARE_MESSAGE_MAP() }; BEGIN_MESSAGE_MAP(COmaWin,CFrameWnd) ON_WM_ERASEBKGND() END_MESSAGE_MAP() //--------------------------------------------------------------- afx_msg BOOL COmaWin::OnEraseBkgnd( CDC* pDC ) //--------------------------------------------------------------- { FillWithBitmap(pDC,m_bmpUkko); return TRUE; // CPen *OldPen,*NewPen; // CRect R; // GetClientRect(R); /*NewPen = new CPen(PS_SOLID,2,RGB(10,10,10)); OldPen = pDC->SelectObject(NewPen); pDC->FillSolidRect(0,0,R.Width(),R.Height(),RGB(255,255,0)); pDC->MoveTo(0,0); pDC->LineTo(R.Width(),R.Height()); pDC->MoveTo(R.Width(),0); pDC->LineTo(0,R.Height()); pDC->SelectObject(OldPen); delete NewPen;*/ }; //-------------------------------------------------------------------- int COmaWin::CreateUkkoBitmap() //-------------------------------------------------------------------- { CDC dcUkko; CGdiObject *OldBmp,*OldPen; CDC *dc = GetDC(); CPen *pnBlack = new CPen(PS_SOLID,1,RGB(0,0,0)); m_bmpUkko.CreateCompatibleBitmap(dc,32,32); dcUkko.CreateCompatibleDC(dc); OldBmp = dcUkko.SelectObject(&m_bmpUkko); OldPen = dcUkko.SelectObject(pnBlack); //Tausta keltaiseksi dcUkko.FillSolidRect(0,0,32,32,RGB(255,255,0)); //Piirretään ukko dcUkko.Ellipse(4,4,8,8); dcUkko.MoveTo(6,8); dcUkko.LineTo(6,18); dcUkko.LineTo(2,26); dcUkko.MoveTo(6,18); dcUkko.LineTo(10,26); dcUkko.MoveTo(2,17); dcUkko.LineTo(6,9); dcUkko.LineTo(12,4); dcUkko.SelectObject(OldPen); dcUkko.SelectObject(OldBmp); ReleaseDC(dc); delete pnBlack; return 1; }; //********************************************************************************************* class COmaApp : public CWinApp //********************************************************************************************* { virtual BOOL InitInstance() { COmaWin *p = new COmaWin; m_pMainWnd = p; p->ShowWindow(SW_SHOW); p->UpdateWindow(); return TRUE; }; }; COmaApp OmaApp;