Re: Bargraphs
In case your answer to my question is yes.
Here is the code to draw a bitmap as the background.
void CBarChart::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect cr;
GetClientRect(&cr);
//create a memory dc and memory bitmap to draw on,
//later we will dump everything on the screen at
//the same time
CDC MemDC;
MemDC.CreateCompatibleDC(&dc);
int SavedDC1 = MemDC.SaveDC();
CBitmap MemBitmap;
MemBitmap.CreateCompatibleBitmap(&dc,cr.Width(),cr.Height());
MemDC.SelectObject(&MemBitmap);
//load background bitmap
CBitmap Bitmap;
Bitmap.LoadBitmap(IDB_BITMAP1);
BITMAP BmpInfo;
Bitmap.GetBitmap(&BmpInfo);
CDC MemDC2;
MemDC2.CreateCompatibleDC(&dc);
int SavedDC2 = MemDC2.SaveDC();
//copy bitmap to memory dc.
MemDC2.SelectObject(&Bitmap);
MemDC.StretchBlt(0,0,cr.Width(),cr.Height(),&MemDC2,0,0,BmpInfo.bmWidth,BmpInfo.bmHeight,SRCCOPY);
MemDC2.RestoreDC(SavedDC2);
//draw the graphs on the memory DC
CBrush GreenBrush(RGB(100,255,100));
int c=15,b=5;
int d = (cr.Width()-20)/m_Array.GetCount();
MemDC.SelectObject(GreenBrush);
for (b=0; b<m_Array.GetCount(); b++)
{
int a = m_Array.GetAt(b);
MemDC.Rectangle(c, cr.Height()-10, c+20, cr.Height()-a-10);
c+=d;
}
//dump everything from memory dc to dialog
dc.BitBlt(0,0,cr.Width(),cr.Height(),&MemDC,0,0,SRCCOPY);
MemDC.RestoreDC(SavedDC1);
}
AliR.
"AliR (VC++ MVP)" <AliR@online.nospam> wrote in message
news:posmj.490$xq2.174@newssvr21.news.prodigy.net...
Refer back to the original code that I gave you. The drawing of the bar
chart was inside a CStatic derived class (CBarChart) not the dialog box
OnPaint.
So put the code back to that, place a static control or picture box on the
dialog box, then right click on it to add a variable then change the type
from CStatic to CBarChart.
Here is the link to the original post: Look at the last post on the bottom
of the page:
http://groups.google.com/group/microsoft.public.vc.mfc/browse_thread/thread/2f8995d9590defb/86fd92bc07209502?lnk=gst&q=Kahlua#86fd92bc07209502
Do you also want to display a bitmap inside the picture box?
AliR.
"Kahlua" <kahlua@right.here> wrote in message
news:IFrmj.27$u_5.16@trndny09...
The code I have written to draw the bargraph does draw the bars properly
when I click OnButton1.
How do I modify the code so that it will draw the bargraph inside a
picture box?
I have added a IDC_PIC1 as a picture box in my dialog.
Thanks.
This is my main code so far:
=========================================================
BOOL CMartin1Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, FALSE);
int i;
for (i=0; i<33; i++) //initialize bars to zero
bar[i] = 0;
return TRUE;
}
void CMartin1Dlg::OnPaint()
{
CPaintDC dc(this); // device context for
painting
int SavedDC = dc.SaveDC();
CRect cr;
GetClientRect(&cr);
CBrush GreenBrush(RGB(100,255,100));
CBrush WhiteBrush(RGB(255,255,255));
int c=15,b=5,d ; //initialize variables
dc.SelectObject(WhiteBrush);
dc.Rectangle(0,0,cr.Width(), cr.Height());
dc.SelectObject(GreenBrush);
for (b=0; b<10; b++)
{
dc.Rectangle(c, cr.Height()-50, c+10, cr.Height()-50-bar[b]);
c+=d;
}
dc.RestoreDC(SavedDC);
}
HCURSOR CMartin1Dlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CMartin1Dlg::OnButton1()
{
int i;
for (i=0;i<10;i++)
bar[i]=i*10;
Invalidate(false);
}