实现MFC菜单画笔画圆,并且打钩

这个是用最简单的方法,移动客户区,圆会不见,所以下一篇我还要改进。

首先新建一个MFC单文件,在资源那里的菜单下,建立画笔,可以弹出红画笔,蓝画笔和绿画笔,,给出ID_RED,ID_BLUE,ID_GREEN并且在视类下建立类向导添加command函数,这时候,我们要想下怎么表示这些颜色,我的做法是,在视类定义一个公有整型变量int m_pencolor,还要设置三个布尔变量(表示打钩状态,等下会说)然后在构造函数初始化为1,(可以默认选红色)在视类头文件加上

{。。。

public:
bool statu2;//绿画笔打钩状态
bool statu1;//蓝画笔打钩状态
bool statu;//红画笔打钩状态
int m_pencolor;

。。。

}

我们默认选的是红画笔,当我们点击其他颜色的笔时,要在相应画笔前面打钩,这时候需要一个更新函数,也是建立类向导,选择视类的更新函数

void CXfView::OnUpdateRed(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
if(m_pencolor=1)

pCmdUI->SetCheck(statu);//把菜单选中 设置3个布尔值

}

void CXfView::OnUpdateBlue(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
if(m_pencolor=2)
pCmdUI->SetCheck(statu1);

}

void CXfView::OnUpdateGreen(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
if(m_pencolor=3)

pCmdUI->SetCheck(statu2);

}

command函数那里写上代码:

void CXfView::OnRed()

{ // TODO: Add your command handler code here

m_pencolor=1;

}

void CXfView::OnBlue()

{// TODO: Add your command handler code here

m_pencolor=2;

}

void CXfView::OnGreen()

{// TODO: Add your command handler code here

m_pencolor=3;

}

然后颜色现在是可以选择了,那么我们要怎样用鼠标画圆呢?

右击视类,添加window message hanlder

void CXfView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
COLORREF color;
switch(m_pencolor)//这里是用选择语句判断选择什么颜色
{
case 1:
color=RGB(255,0,0);//m_pencolor=1为红色
statu=1;//这里还要再在视类设置布尔三个变量,用来表示菜单栏那里是否打钩,

//这里选择红画笔,打钩
statu1=0;
statu2=0;
break;
case 2:
color=RGB(0,0,255);
statu=0;
statu1=1;
statu2=0;
break;
case 3:
color=RGB(0,255,0);
statu=0;
statu1=0;
statu2=1;
break;
}
CPen NewPen, *pOldPen;
NewPen.CreatePen(PS_SOLID,10,color);//实心线
CClientDC dc(this);
pOldPen= dc.SelectObject(&NewPen);

dc.Ellipse(point.x-50,point.y-50,point.x+50 ,point.y+50);//画圆
dc.SelectObject(pOldPen);//这句话(我也不太懂)

CView::OnLButtonDown(nFlags, point);
}

这样就基本好了,这里是临时写的,之前试过是可以的,不知会不会遗漏什么,欢迎大家批评指正。

时间: 2024-08-24 06:09:57

实现MFC菜单画笔画圆,并且打钩的相关文章

css3动画,制作跑步运动,画笔画圆,之类的连贯性动作的方法

首先来看一下例子的效果图: 1.通过改变图片来实现,比较连贯,但是需要好多张图片来实现,增加了http请求,但是很好用,主要用到css3和animation. <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,

MFC 直线 虚线 折线 圆 椭圆 矩形 弧形

****Dlg.h头文件添加: //为工程添加画笔.点变量数组 public: CPen m_pen[5]; CPoint m_point[5]; public: void DrawLine(CDC *pDC); void DrawPolyline(CDC *pDC); void DrawPolygon(CDC *pDC); void DrawRect(CDC *pDC); void DrawRoundRect(CDC *pDC); void DrawEllipse(CDC *pDC); voi

[游戏学习25] MFC 橡皮筋画线效果

>_<:这是给出窗口内外不同情况的处理展示的例子. >_<:MouseCap.h 1 #include<afxwin.h> 2 class CMyApp :public CWinApp 3 { 4 public: 5 virtual BOOL InitInstance(); 6 }; 7 class CMainWindow:public CFrameWnd 8 { 9 protected: 10 BOOL m_bTracking; //标志:鼠标按下为真,否则为假 11

MFC菜单、工具栏和状态栏

菜单:CMenu类 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 CMenu类的主要成员函数        BOOL LoadMenu(UINT nIDResource);        加载菜单资源,并将其附加到CMenu对象上.参数nIDResource指定了要

看opengl 写代码(4) 画一个圆

opengl 编程指南 P30 下面代码 是 用 直线 连起来 画一个圆. // circle.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <gl/glut.h> #include <cmath> #define LENGTH 100 #define PI 3.1415926 void init(){ glClearColor(0,0,0,0); } void display(){ glColor3f

Android 画个圆 淡入淡出

private class SimpleView extends ImageView{ int point_x; int point_y; int radius = 0; public SimpleView(Context context) { super(context); // TODO Auto-generated constructor stub } @Override public boolean onTouchEvent(MotionEvent event) { point_x =

【mfc】利用到MFC菜单、字体对话框、OnSize函数实现简易记事本

经过了之前大量mfc已经明白了许多功能,但是之前的项目一直没有使用到mfc的菜单功能,菜单是Win32功能很常见的东西,这个也必须要懂.其实菜单的建立也很简单,配合之前的文件操作功能,已经能够把开始->附件->记事本,就是那个notepad.exe写出来了. 一.基本目标 首先,这个记事本能够最大化,最小化,里面的编辑框也能够跟住最大化最小化,就是记事本里面组件不会失真,这个也不是理所当然的时候,要对OnSize进行写作,否则里面的组件是不会跟着最大化的,这大概就是mfc比vb艰难的原因吧!

Bresenham算法画填充圆及SDL代码实现

画圆是计算机图形操作中一个非常重要的需求.普通的画圆算法需要大量的浮点数参与运算,而众所周知,浮点数的运算速度远低于整形数.而最终屏幕上影射的像素的坐标均为整形,不可能是连续的线,所以浮点数运算其实纯属浪费.下面介绍的Bresenham算法就是根据上文的原理设计.该算法原应用于直线的绘制,但由于圆的八分对称性,该算法也适用与圆(曲线图形)的绘制. 该算法主要是这样的原理:找出一个1/8的圆弧,用快速的增量计算找出下一个点.同时利用圆的八分对称性,找出8个点(包括该点),进行绘制. 这里给出示例的

Photoshop 画空心圆

1. 本文涉及的基础点 1.如何拉参考线? 2.Shift按键固定宽高比 3.Alt按键从中心出发 3.选区相减 2.具体操作 打开参考线(Ctrl-R),从上面参考线拉根线到中心,从左边拉根参考线到中心: 选择椭圆选框工具(M),同时按住ALT+SHIFT键就可以画一个以一个圆心的正圆.这点我之前一直不知道,之前最多知道shift可以画圆,不知道alt的作用. 再把鼠标移到中心点先按ALT键,按下鼠标轻拖,接着松开ALT键再按下,再按SHIFT键,这时拖拉鼠标,就可以画出空心圆的选区了. 这里