MFC对话框上怎么画圆?是用onpaint函数吗?

就是我在对话上的一个编辑窗口吸收半径变量,然后在这个窗口上以这个半径画圆?具体是怎么实现呢。
onpaint函数如下:
void CLastDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
}
具体怎么修改这个函数?

CRect rc ;
CStatic *pPic = (CStatic*)GetDlgItem(IDC_STATIC_Pic);
pPic->GetClientRect(&rc);//获得控件客户区大小
CDC *pDC = pPic->GetDC();//获取绘图DC
int cx=rc.right;
int cy=rc.bottom;

pDC->SetMapMode(MM_ANISOTROPIC);//X=Y  
pDC->SetWindowExt(cx,cy); //设置窗口坐标系的大小
pDC->SetViewportExt(cx,cy);//定义输出视口,X向右,Y向上 |_
pDC->SetViewportOrg(m_movePoint.x,m_movePoint.y);//设置坐标原点  左下为圆点        注:我的这个坐标好像是我移动图片时候的标记点,你把这个设为你自己的固定点就行。

CPen pen(PS_SOLID, 1, RGB(255,0,255));
pDC->SelectObject(pen);
pDC->SelectStockObject(NULL_BRUSH);
pDC->Ellipse(&rect);        // 这个就是画圆了 其实是椭圆  只要把参数设置为正方形 就是圆了
CPen penSide(PS_SOLID, 1, RGB(255,0,0));
pDC->SelectObject(penSide);
pDC->Ellipse(&rctSide);
//删除画笔
pen.DeleteObject();
penSide.DeleteObject();
ReleaseDC(pDC);

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-04-16
第一步,向导添加对话框重绘虚函数 onpaint第二部 构造对象 Cpaintdc dc第三步,创建一只你喜欢的笔,并且把笔选入到设备描述表然后调用绘图函数,三点画一园 或者6坐标画一园 。。。怎么样 很简单把
第2个回答  2014-04-05
获取文本框输入的变量值!然后把这个变量值传递给画圆的半径!

MFC中如何在一个图片上绘制圆形
找到OnPaint函数,先把图片绘制上去,再在需要的位置上绘制圆形。怎么绘制图片,怎么绘制圆形,网上有大量的资料

MFC 中OnPaint()函数中的用法
OnPaint()在窗口进行重绘时会被调用,所以如果有些图或者控件是你动态生成的,而你又不希望在重绘时被擦除的话,你可以把绘图的过程写在OnPaint里。

MFC中OnDraw和OnPaint的区别
(一) OnPaint 和 OnDraw(1)OnPaint是WM_PAINT消息的消息处理函数,在OnPaint中调用OnDraw,一般来说,用户自己的绘图代码应放在OnDraw中。(2)OnPaint()是CWnd的类成员,负责响应WM_PAINT消息。OnDraw()是CVIEW的成员函数,没有响应消息的功能.(3)当视图变得无效时(包括大小的改变,移动,被...

VC++ MFC在对话框上画图问题
1、如何在新建的一个dialog中添加onpaint()函数?例如你新建了一个dialog,类名为test22(添加类是双击新建那个窗口),接着找到这个类的头文件test22.h,在其中的protected中添加一行afx_msg void OnPaint();这样就可以在test22.cpp中用onpaint()函数了,添加void test22::OnPaint(){}就可以了:...

...可以不写在OnPaint函数中吗?画图的执行机制是怎样的
1.可以不在OnPaint中 2.其机制是:a.windows是多窗口的,你的程序不应该把图画到其它地方去,所以你要取得窗口的专门管绘图的一个句柄,叫做 HDC b.你用MFC,要取它的话用这句: CDC* pDC=this->GetDC(); (某窗口的DC,例如本窗口就是this)c.然后就可以向DC中画了,例如:pDC->LineTo(100,100...

mfc中创建一个黑色背景的画布,然后双击画布可以产生一个白色的圆,并且...
可以在OnPaint函数中,直接获取当然窗口的DC然后填充黑色,这就是黑色背景的话不了。然后处理鼠标左键双击消息,鼠标双击时记录鼠标当前的坐标位置,然后绘制一个圆,并白色填充,这个最好查下MSDN ,如果想要demo的话,去csdn下载搜索,这类demo是有很多的。祝好运。

用mfc画一个圆的完整代码 要求圆里面填充为蓝色
用MFC向导创建一个名称为Yuan的对话框工程. 并添加对话框类CYuanDlg的OnPaint函数的画圆功能.void CYuanDlg::OnPaint(){ if (IsIconic()){ CPaintDC dc(this); \/\/ device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);\/\/ Center icon in client ...

MFC怎么实现圆形按钮
第四步:在CARMDlg::OnPaint()中添加如下代码,实现对窗口的重绘:\/\/CDialog::OnPaint();CPaintDC dc(this);CBrush brush;brush.CreatePatternBrush(&m_bkg);CBrush *pOld = dc.SelectObject(&brush);CRect rc;GetClientRect(rc);dc.FillRect(rc,&brush);dc.SelectObject(pOld);pOld->...

关于MFC的onpaint函数问题!!
只负责“客户区前景”。实际上,原生窗口类(如CWnd、CFrameWnd)的OnPaint函数是空的,不会做任何处理,但如果调用了,就会产生GDI资源控制问题,因此不能调用。也可以从另一个方面理解:每个窗口需要绘制的前景内容都是不同的,没有相同的部分。相同的地方,在响应WM_PAINT之前,已经处理了。

MFC基本对话框的串行化函数
1、在menu里的菜单项,你可以点击右键选择Class Wizard,然后弹出对话框你就可以在右侧Messages里点选command,再点击添加函数按钮就行了。工具栏的图标只要它的ID和对应的菜单项ID一样就行了。23、初始化函数是CView的派生类的PreCreateWindow,画图就在OnDraw,OnDraw是在窗口发生变化时重绘,但初始化要...

相似回答