请问如何用VC在picture control上面自绘图画

请问如何用VC在picture control上面自绘图画,第1张

只是要画图的话建议static控件。在WM_PAINT时先Update(hStatic);在用GetDC(hStatic)获得DC绘图。由于先Update,所以绘的图不会被Static覆盖

建立mfc工程然后实现您要的功能

步骤:

1、

new 选择project选项卡

2、

选择MFC AppWizard (exe) 填写相关信息点击确定就可以了

一般MFC中 OnDraw(CDCpDC) 这个函数 后面都有 CDCpDC

HDC就是最原始的 DC 句柄 ,在MFC中,为了将API封装成一个类来 *** 作,因此多出来了一个CDC

所以你说的那块绘图的区域 就是定义一块内存!

双缓充技术 就是开2个DC

CDC MemDC1;

CDC MemDC2;

MemDC1MoveTo(20,420);

MemDC1LineTo(425,420);//这是画到第一个

MemDC2MoveTo(20,420);

MemDC2LineTo(425,420);//这是画到第二个

pDC->BitBlt(x,y,450,460,&MemDC1,0,0,SRCCOPY);把第一块内存画到显示上去

pDC->BitBlt(x,y,450,460,&MemDC2,0,0,SRCCOPY);把第二块内存画到显示上去

上面就是最简单的 双缓冲 例子

如果觉得不详细,你可以看看一楼的传送门,或者直接网上找个例子看看

VC++画圆形可以使用API函数:Ellipse(int  x1, int y1, int x2, int y2);

其画圆的原理是矩形的内切圆,四个参数中的前两个是矩形左上角坐标,后两个是矩形右下角坐标。VC++画图形前得先有一块画布DC即设备上下文。下面个例子:

void CrrDlg::PaintCircle()   //画实心圆函数

{

CDC pDC = this->GetDC(); //获取DC

CBrush brush,oldbrush;   //画刷

//通过定时器中num递增,实现红色圆形与绿色圆形交替出现,即闪灯现象

if (num%2){    //num为定时器计数参数,其为偶数时画红色圆形

brushCreateSolidBrush(RGB(255,0,0));

}

else{         //num为奇数时,画绿色圆形

brushCreateSolidBrush(RGB(0,255,0));

}

oldbrush=pDC->SelectObject(&brush);

pDC->Ellipse(10,10,100,100);

pDC->Ellipse(110,10,200,100);

pDC->SelectObject(oldbrush);

ReleaseDC(pDC);

}

void CrrDlg::OnTimer(UINT_PTR nIDEvent)  //定时器

{

num++;

PaintCircle();

CDialogEx::OnTimer(nIDEvent);

}

画空心圆环需要使用画笔CPen,画法一样。

我是用MFC的

首先在VIEW,H里面定义变量

CPoint startpoint;

然后初始化为o

在鼠标单击事后记录点

void CimagepaintView::OnLButtonDown(UINT nFlags, CPoint point)

{

// TODO: 在此添加消息处理程序代码和/或调用默认值

startpoint=point;

CView::OnLButtonDown(nFlags, point);

}

在松开鼠标时

void CimagepaintView::OnLButtonUp(UINT nFlags, CPoint point)

{

// TODO: 在此添加消息处理程序代码和/或调用默认值

//topoint=point;

CClientDC dc(this);

CPen pen;

dcSelectObject(&pen);

dcSelectObject(&brush);

dcMoveTo(startpoint);

dcLineTo(point);

CView::OnLButtonUp(nFlags, point);

}

这样就可以了。画什么都可以。

或者卸载ONDRAW里面也行

这是我写的部分代码。。

以上就是关于请问如何用VC在picture control上面自绘图画全部的内容,包括:请问如何用VC在picture control上面自绘图画、如何使用vc++进行画图界面的开发,新手~、vc++中,做的一个画图的小程序,怎么在窗口重画后使图像不消失绘制代码不在ondraw()函数里面。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10114284.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存