精华内容
下载资源
问答
  • MFC 画图

    2015-09-11 11:46:30
    MFC 画图 精华: Windows中负责图形输出的是GDI(即GraphicDeviceInterface,图形设备接口)。这是Windows与硬件无关的图形输出模式的体现。GDI建立在硬件抽象层(HAL)之上,屏蔽了不同输出设备之间的差异,从而为...

    MFC 画图

    精华:

    Windows中负责图形输出的是GDI(即GraphicDeviceInterface,图形设备接口)。这是Windows与硬件无关的图形输出模式的体现。GDI建立在硬件抽象层(HAL)之上,屏蔽了不同输出设备之间的差异,从而为用户提供了一个统一的“标准输出设备”。但是,与DOS不同,Windows是多任务、进程独立的,每一个窗口都应该有一个独立的输出通道。这样,GDI又使用了一种简单的机制来保证在窗口中画图的不同程序之间能共享“设备”而又互不干扰。这个机制就是DC(DeviceContext,设备描述表)。
    有人把DC比喻成画家的画室,这里有画布、画刷、画笔等等很多工具。

    就画布而言,画布形式可以不同,是的,我可以在桌上(desktop)的纸上(window)画,也可以就画在桌面上,还可以画在墙上(管的着吗!^_^)。
    为此,WindowsMFC提供了四种不同的DC环境(封装为C 类),以标明不同的绘制权限,即:
    CPaintDC,用于在窗口客户区画图(仅限于在OnPaint处理函数中使用);
    CClientDC,也用于在窗口客户区画图(限于在OnPaint处理函数之外使用);
    CWindowDC,用于在窗口内任意地方画图,包括非客户区;
    CMetaFileDC,用于绘制GDI图元文件。 www.mscto.com

    这些类都可以直接实例化,如:
    CPaintDCdc(this);//
    this表示此DC所属窗口为当前窗口
    创建了一个CPaintDC对象dc。
    CWindowDC一般不常用,如果想在窗口非客户区画图,可借助OnNcPaint()处理函数捕获WM_NCPAINT消息。

    刚才说了,DC中还有画刷、画笔等。这些都是DC的属性,可通过DC自身(调用其成员函数)获得。
    DC属性包括文本颜色、背景颜色、映射模式、绘图模式、当前位置、当前画笔(刷)和当前字体等。
    画笔(Pen)、画刷(Brush)都是独立的GDI对象,可通过CDC成员函数SelectObject()选入DC。同样操作方式的对象还有字体(Font)、位图(Bitmap)、调色板(Palette)和区域(Region)。
    关于SelectObject():在创建好GDI对象之后,SelectObject()接收该对象指针,其返回值为先前选入DC的相同类型的对象指针(通常用来恢复DC用)。
    Windows也预先定义了一些画笔、画刷、字体以及其他一些GDI对象。这些对象称为备用对象,用CGdiObject::SelectStockObject()选入。CGdiObject是表示GDI对象的CPen、CFont等类的基类。备用对象的属性说明可以查MSDN。
    由CGdiObject派生类创建的画笔、画刷和其他对象都要占用内存资源,因此使用后一定要删除它们。处理方法与其他window对象类似。在栈中创建的对象,当此CGdiObject超出范围时会自动析构。在堆中用new创建的CGdiObject对象,可通过调用CGdiObject::DeleteObject显式删除(这会引起对GDI对象析构函数的调用)或用相应的delete运算符。如果是备用对象,则没必要专门删除,留给windows就可以了。


    VC 有一种简单的方法用来确定是否成功的删除了GDI对象:只要在调试状态下运行应用程序的调试版本即可。在应用程序结束时,没有释放的资源会显示在调试窗口中。


    一些知识点

    1.绘图模式:GDI将象素点输出到逻辑显示平面上时,并不只是简单的输出象素颜色,而是通过一系列布尔运算将输出象素点的颜色和输出目标位置上象素点的颜色进行合成再显示。所使用的逻辑运算关系就由DC的绘图模式确定。使用CDC:SetROP2()可更改绘图模式(ROP2,RasterOperationTo)。默认绘图模式是R2_COPYPEN,直接将象素点输出到显示平面上。常用的还有R2_NOT,用于实现鼠标绘图时的Rubber技术。

    2.映射模式:这是DC的属性之一,用于确定从逻辑坐标到设备坐标的转换(或者说mapping,映射)方式。设备坐标是指窗口中相应的象素点位置。单位只有象素一种。而逻辑坐标依映射模式不同而单位各异。如默认的MM_TEXT模式下,一个单位恰恰是一个象素点。MM_LOENGLISH模式下,一个单位则相当于百分之一英寸长。windows支持8种映射模式,其中的MM_ISOTROPIC和MM_ANISOTROPIC是可编程的。这意味着是用户而不是windows确定从逻辑坐标到设备坐标的转换方式。换句话说,就是用户来自行定制逻辑单位的实际大小。这两种模式最常用于根据窗口尺寸按比例自动调节画图输出大小的场合。两者之间的唯一区别在于:前者中X方向和Y方向具有同一缩放比例因子。设置映射模式的函数是CDC::SetMapMode()。

    3.坐标系常用技术:
    1)坐标变换:调用CDC::LPtoDP可将逻辑坐标值转换为设备坐标值。反之,调用CDC::DPtoLP可将设备坐标值转换为逻辑坐标值。在相应鼠标单击区域命中测试时,将使用这两个函数。因为鼠标单击得到的是设备坐标,而很多GDI函数使用逻辑坐标,必须转换为统一坐标,操作才有意义。
    2)原点移动:默认方式下,DC的原点位于相应显示平面的左上角。MFC提供了两个CDC类成员函数,可改变原点位置。CDC::SetWindowOrg()移动窗口原点,CDC::SetViewportOrg()移动视图原点(详见MSDN)。一般只能使用两者之一。原点移动技术在边框滚动条设置时有所体现。
    3)用户坐标与屏幕坐标:前者是设立在窗口客户区左上角的设备坐标值,后者是原点位于屏幕左上角的设备坐标值。两者的相互转换用函数是CWnd::ClientToScreen()和CWnd::ScreenToClient()。

    4.GDI绘图函数
    1)画线:包括MoveTo、LineTo、Polyline、PolylineTo、Arc、ArcTo、PolyBezier等。其中Polyline和PolylineTo都可以一次画多条线,两者的区别是PolylineTo使用DC的当前位置,而Polyline则不需要。ArcTo在win98下未实现。另外,所有GDI画线函数有一个共同特点,就是从不画最后一个象素点。
    2)画图形:画封闭图形的GDI函数以外接矩形的坐标为参数。常用函数有Rectangle、Ellipse、RoundRect、Pie、Chord等。

    5.画笔与画刷:在MFC中,画笔对象封装为CPen类,画刷对象封装为CBrush类。创建两者都有三种方法。最简单的就是构造一个CPen对象,直接给出所用参数进行初始化。第二种方法是调用一个未初始化的CPen对象,用CreatePen()初始化。还有一种方法是构造一个未初始化的CPen对象,通过向LOGPEN结构中填充描述画笔特性的参数,然后调用CPen::CreatePenIndirect()生成画笔。画刷基本相同。
    1)CPen:windows用当前选入DC的画笔绘制线条,并给封闭图形镶制边框。画笔有三个特性,即样式、宽度和颜色。样式有PS_SOLID、PS_INSIDEFRAME、PS_NULL等。PS_NULL一般称其为“NULL画笔”,想画一个没有边框的图形,就用到它了。笔宽以逻辑单位给出,实际意义与当前映射模式相同。颜色是通过RGB宏把三个独立颜色成分的值合成为一个可传递给GDI的COLORREF值来确定的。
    2)CBrush:画刷有三种基本类型,即单色、带阴影线和带图案。其中图案画刷允许用位图填充图形内部(这样,窗口背景也就没啥新鲜的了)。常用函数有
    CDC::SetBkMode()、CDC::SetBkColor()等。

    6.文本与字体:CDC有一打文本处理函数,重要的几个是DrawText、TextOut、GetTextMetrics、SetTextColor和SetTextAlign等。其中GetTextMetrics()传给TEXTMETRIC结构关于字体性质的相关信息。字体是一组具有特定尺寸(高度)和字样的字符;字样指示字体共有属性,如粗细等。字体封装在CFont类中,建立字体对象,要在CFont构造之后,再调用CFont的成员函数CreateFont或CreateFontIndirect等来建立GDI字体资源。针对字体,有一个LOGFONT结构,其中定义了字体的所有特性。也可通过填充它来创建字体。

    展开全文
  • MFC画图

    千次阅读 2018-08-19 20:51:24
    转载请注明出处! 将TeeChart5.ocx放到C:\ Windows \ System32下和C:\ WINDOWS \ SysWOW64中下。 注册------以管理员方式运行cmd输入... ... 选择控件到对话框,添加变量m_chart,删除构造函数初始值 ...选择可用的类...

     转载请注明出处!

    1. 将TeeChart5.ocx放到C:\ Windows \ System32下和C:\ WINDOWS \ SysWOW64中下。
    2. 注册------以管理员方式运行cmd输入regsvr32 Teechart5.ocx后回车。
    3. 工具 - 选择工具箱--COM组件

    1. 选择控件到对话框,添加变量m_chart,删除构造函数初始值

     

    5,

    添加类

    选择可用的类型库

    选择

    1. 添加头文件申明

    #include“CSeries.h”

    #include“CTChart.h”

    1. 添加画线函数

     

    void CTeeChartDlg :: OnBnClickedDrwBtn()

    {

    // TODO:在此添加控件通知处理程序代码

    CSeries lineSeries =(CSeries)m_chart.Series(0);

    lineSeries.Clear();

    函数srand((int)的时间(0)); //设置产生随机数的种子

    for(int i = 0; i <10; i ++)

    {

     

            lineSeries.AddXY(I,随机(10),NULL,NULL);

     

     

    }

    }

     

    展开全文
  • mfc画图

    2008-04-27 22:53:31
    实现mfc中直线,矩形和椭圆的绘画
  • MFC 画图程序

    2018-05-26 08:09:56
    MFC 画图程序 包括了所有画图的功能! 里面包括了源代码,相当好用!
  • MFC画图程序

    2013-06-17 10:10:40
    MFC画图程序
  • MFC画图源码

    2016-04-21 17:32:23
    MFC画图源码
  • mfc画图代码

    2013-03-18 16:03:02
    mfc编写的基础画图代码,有助于学习mfc画图方法
  • mfc画图程序

    2014-09-16 10:53:26
    mfc画图程序 我也是转载的 我是来赚积分下东西的,。
  • MFC画图程序源码

    2017-06-30 16:40:27
    MFC画图程序源码,看有人在问我要,就发上来,VS2013的
  • MFC 画图 修改

    2012-11-09 20:38:18
    MFC 画图 修改大小 修改颜色 保存 打印 画直线 任意画线 画直线 画曲线 画圆 画矩形 画椭圆 画各种圆弧
  • MFC画图实例

    2012-05-29 21:36:32
    MFC画图实例,简单易懂,里面介绍怎样将一副图片显示在对话框中
  • mfc画图小程序

    2012-12-27 13:03:08
    mfc 画图小程序,可以画直线 矩形 圆并且可以改变线的颜色
  • MFC画图 打印 保存

    2013-09-28 09:17:05
    MFC 画图 打印 保存 VC6.0环境下运行
  • MFC画图软件

    2018-05-04 14:20:44
    使用MFC框架开发的画图软件,可以实现线段、折线、圆、多边形等各种图形的绘制,并且支持颜色调整,功能齐全
  • MFC 画图 椭圆 画布 蝴蝶结 正叶线 消隐 计算机图形学
  • MFC画图板详细代码1

    2013-04-02 16:13:15
    这是一个画图板程序,实现的功能可以先看下我上传的MFC画图板1,再决定功能是否有用。
  • mfc画图软件

    2014-06-06 16:38:35
    c++的mfc画图软件,含代码。适合新手学习使用
  • MFC画图操作

    2017-12-23 13:29:35
    简易CAD画图操作,直线,矩形,椭圆,移动,适合新手,大神请忽略!
  • VC MFC画图程序网络连接版 ,是一个DCOM画图程序,支持网络连接。所画的图形基本是很简单的,比如线条、圆形等,整体来说挺简单,希望为您提供一些参考。
  • MFC画图 MFC画图类包含画图设备类和画图对象类 1 画图设备类 CDC类-父类是CObject,封装的是一般的画图设备,比如:显示器, 打印机等。 CWindowDC类-父类是CDC类。封装的是窗体对象,包含客户区和非 ...
     MFC画图
       MFC画图类包含画图设备类和画图对象类
       1 画图设备类
         CDC类-父类是CObject,封装的是一般的画图设备,比如:显示器,
               打印机等。
         CWindowDC类-父类是CDC类。封装的是窗体对象,包含客户区和非
               客户区。
         CClientDC类-父类是CDC类,封装的仍然是窗体。可是仅仅包含客户区。


         CPaintDC类-父类是CDC类,封装的是窗体的客户区。可是,它仅仅用
                 在窗体的WM_PAINT消息处理函数中。
         CMetaFileDC类-父类是CDC类,作用保存绘制命令。


       2 使用
        创建MFC AppWizard(exe)project,加入菜单项。然后使用类向导生成消息命令的函数体框架。
         2.1 CDC::CreateDC()-创建画图设备
         virtual BOOL CreateDC(
            LPCTSTR lpszDriverName,//设备的驱动名称
            LPCTSTR lpszDeviceName,//设备名称
            LPCTSTR lpszOutput,//接口
            const void* lpInitData//设备的初始化參数
         );
         设备为显示器时,("DISPLAY",NULL,NULL,NULL);
         2.2 使用
            ....
         2.3 CDC::DeleteDC()-删除设备
         2.4 CDC的子类CWindowDC、CClientDC、CPaintDC,在构造函数中
            调用CreateDC(),在析构函数中调用DeleteDC(),所以,子类使用
            仅仅须要构造对象就可以。

         2.5 CMetaFileDC类的使用
            2.5.1 创建
                  CMetaFileDC::Create
            2.5.2 绘制
                  ....
            2.5.3 关闭。返回句柄 HMETAFILE
                  CMetaFileDC::Close
            2.5.4 使用
                  CDC::PlayMetaFile
            2.5.5 删除
                  DeleteMetaFile
        3 画图对象类
          3.1 CPen-画笔
          3.2 CBrush-画刷
          3.3 CFont-字体
          3.4 CBitmap-位图
          3.5 CRgn-区域
          3.6 CPalette-调色板
              RGB(0~255,0~255,0~255),每一个颜色值占3个字节。


          彩色位图,800*600像素,位图大小是:800*600*3 字节
          颜色表大小 48*3 +800*600*1
          3.7 使用
          3.7.1 CPen、CBrush、CFont的使用

          3.7.2 CBitmap的使用

          3.7.3 CRgn的使用
                1 创建
                  CRgn::CreateXXX
                2 将两个CRgn对象进行几何运算
                  CRgn::CombineRgn
                3 填充
                  CDC::FillRgn
                4 填充边框

                  CDC::FrameRgn

    程序演示样例:


    在****view类中,定义一个成员变量:

    HMETAFILE m_hMetafile;


    //功能实现部分主要代码

    void CMFCdrawView::OnDcCwindowdc() 
    {
    	// TODO: Add your command handler code here
    	CWindowDC dc(AfxGetMainWnd());
    	dc.TextOut(0,0,"Hello CWindowDC");
    
    }
    
    void CMFCdrawView::OnDcCmetafiledc() 
    {
    	// TODO: Add your command handler code here
    	//创建
    	CMetaFileDC dc;
    	dc.Create();
    	//绘制命令
    	dc.TextOut(100,100,"DcCmetafile");
    	dc.MoveTo(150,150);
    	dc.LineTo(200,200);
    	//关闭,并返回句柄
    	m_hMetafile= dc.Close();
    	CClientDC dc2(this);
    	dc2.PlayMetaFile(m_hMetafile);
    }
    
    void CMFCdrawView::OnDcCclientdc() 
    {
    	// TODO: Add your command handler code here
    	CClientDC dc(this);
    	dc.TextOut(0,0,"Hello CClientDC");
    }
    
    void CMFCdrawView::OnDcCdc() 
    {
    	// TODO: Add your command handler code here
    	CDC dc;
    	dc.CreateDC("DISPLAY",NULL,NULL,NULL);//打印到屏幕上
    	RECT rc={0};
    	rc.left=0;rc.right=200;rc.top=0;rc.bottom=100;
    	dc.DrawText("hello cdc",&rc,DT_MODIFYSTRING);
    	dc.DeleteDC();
    }
    
    void CMFCdrawView::OnPaint() 
    {
    	CPaintDC dc(this); // device context for painting
    	dc.TextOut(0,20,"Hell0 Paint");
    	//使用CMetaFile
    	if(m_hMetafile)	dc.PlayMetaFile(m_hMetafile);
    	//OnGdiBitmap();
    	// Do not call CView::OnPaint() for painting messages
    }
    
    void CMFCdrawView::OnGdiBitmap() 
    {
    	// TODO: Add your command handler code here
    	CClientDC dc(this);
    	CDC dcBitmap;//内存dc
    	dcBitmap.CreateCompatibleDC(&dc);
    	CBitmap bmp;//位图对象
    	bmp.LoadBitmap(IDB_BITMAP1);//插入的图片资源
    	CBitmap*oldbmp=dcBitmap.SelectObject(&bmp);//放入内存dc
    	//dc.BitBlt(300,300,110,37,&dcBitmap,0,0,SRCCOPY);//成像
    	RECT rc={0};
    	GetClientRect(&rc);
    	//拉伸成像
    	dc.StretchBlt(0,0,rc.right,rc.bottom,&dcBitmap,0,0,101,37,SRCCOPY);
    	dcBitmap.SelectObject(oldbmp);
    	dcBitmap.DeleteDC();//删除内存dc
    	bmp.DeleteObject();//删除位图对象
    	
    }
    
    void CMFCdrawView::OnGdiBrush() 
    {
    	// TODO: Add your command handler code here
    	//CBrush brush(HS_CROSS,RGB(0,255,0));//普通画刷
    	CBitmap bmp;bmp.LoadBitmap(IDB_BITMAP2);
    	CBrush brush(&bmp);//位图画刷
    	CClientDC dc(this);
    	CBrush*oldbrush=dc.SelectObject(&brush);
    	dc.RoundRect(50,50,220,220,2,2);
    	dc.SelectObject(oldbrush);
    	brush.DeleteObject();
    	
    }
    
    void CMFCdrawView::OnGdiFont() 
    {
    	// TODO: Add your command handler code here
    	CFont font;
    	font.CreatePointFont(500,"黑体");
    	CClientDC dc(this);
    	CFont*oldfont=dc.SelectObject(&font);
    	dc.TextOut(150,150,"OnGdiFont");
    	dc.SelectObject(oldfont);
    	font.DeleteObject();
    }
    
    void CMFCdrawView::OnGdiPen() 
    {
    	// 创建画笔
    	CPen pen(PS_SOLID,5,RGB(255,0,0));
    	//将画笔选择当前设备
    	CClientDC dc(this);
    	CPen * oldpen=dc.SelectObject(&pen);
    	dc.TextOut(10,10,"OnGdiPen");
    	dc.RoundRect(100,100,200,200,2,2);
    	dc.SelectObject(oldpen);
    	pen.DeleteObject();
    	
    }
    
    void CMFCdrawView::OnGdiRgn() 
    {
    	CRgn rgn1,rgn2;
    	//创建
    	rgn1.CreateEllipticRgn(100,100,300,300);
    	rgn2.CreateEllipticRgn(150,100,350,300);
        //几何运算
    	rgn1.CombineRgn(&rgn1,&rgn2,RGN_XOR);
    	//填充
    	CClientDC dc(this);
    	CBrush brush(RGB(255,0,0));
    	CBrush brush2(RGB(0,0,255));
    	dc.FillRgn(&rgn1,&brush);
    	//dc.FillRgn(&rgn2,&brush2);
    	//填充边框
    	dc.FrameRgn(&rgn1,&brush2,5,1);
    	//将窗体的区域设置成rgn1
    	AfxGetMainWnd()->SetWindowRgn(rgn1,TRUE);
    }
    
    效果:



    2、

    简单的鼠标画图的样例
       1 图形数据,1 起点和终点,CPoint;
                  2 使用整数变量确定当前绘制的图形
                     UINT m_nType;
                     m_nType=1;直线
                     m_nType=2;矩形
                     m_nType=3;椭圆
                     m_nType=0;不绘制图形
                   3 BOOL m_bFlag;//标识是否開始画线
       2 绘制过程
         2.1 LBUTTONDOWN消息
             m_bFlag=TRUE;//開始画图
             m_ptBegin=m_ptEnd=point; //确定起点位置
         2.2 MOUSEMOVE消息
             if(m_bFlag)
             {
                //擦线

                //画线
             }
         2.3 LBUTTONUP消息
             m_bFlag=FALSE;//结束画线

    模拟画图软件,鼠标点下进行画图。放开则绘制指定的图形。

    新建立 MFC 应用程序,并依照例如以下操作:






    在****view 中,增加成员变量:

        CPoint m_ptBegin;//起点坐标
        CPoint m_ptEnd;//终点坐标
        UINT m_nType;//类型:1-直线,2-距形。3-圆
        BOOL m_bFlag;//是否開始画线


    ****view中主要实现代码:

    //构造函数
    CMFCdraw2View::CMFCdraw2View()
    {
    	// TODO: add construction code here
    	m_nType=0;
    	m_bFlag=FALSE;
    	m_ptBegin=m_ptEnd=0;
    }
    
    void CMFCdraw2View::OnDrawElipse() 
    {
    	// TODO: Add your command handler code here
    	m_nType=3;
    }
    
    void CMFCdraw2View::OnDrawLine() 
    {
    	// TODO: Add your command handler code here
    	m_nType=1;
    }
    
    void CMFCdraw2View::OnDrawRect() 
    {
    	// TODO: Add your command handler code here
    	m_nType=2;
    }
    
    void CMFCdraw2View::OnLButtonDown(UINT nFlags, CPoint point) 
    {
    	// TODO: Add your message handler code here and/or call default
    	m_bFlag=TRUE;//開始画图
        m_ptBegin=m_ptEnd=point; //确定起点位置 
    	CView::OnLButtonDown(nFlags,point);
    }
    
    
    void CMFCdraw2View::OnLButtonUp(UINT nFlags, CPoint point) 
    {
    	// TODO: Add your message handler code here and/or call default
    	m_bFlag=FALSE;//结束画线
    	CView::OnLButtonUp(nFlags, point);
    }
    
    void CMFCdraw2View::OnMouseMove(UINT nFlags, CPoint point) 
    {
    	// TODO: Add your message handler code here and/or call default
    	CClientDC dc(this);
    	if(m_bFlag)
    	{
    		//擦线
    		DrawShape(&dc,m_ptBegin,m_ptEnd);
    		//画线
    		DrawShape(&dc,m_ptBegin,point);
    		//保存终点位置,为擦线准备
    		m_ptEnd=point;
        }
    	CView::OnMouseMove(nFlags, point);
    }
    void CMFCdraw2View::DrawShape(CDC *pDC, CPoint p1, CPoint p2)
    {
    	//设置画图模式,R2_NOT与当前画线处颜色相反
    	pDC->SetROP2(R2_NOT);
    	//设置画刷为透明画刷
    	CBrush *pOldBrush=
    		(CBrush*)pDC->SelectStockObject(NULL_BRUSH);
    	switch (m_nType)
    	{
    	case 1://直线
    		pDC->MoveTo(p1);
    		pDC->LineTo(p2);
    		break;
    	case 2://矩形
    		pDC->Rectangle(p1.x,p1.y,p2.x,p2.y);
    		break;
    	case 3://椭圆
    		pDC->Ellipse(p1.x,p1.y,p2.x,p2.y);
    		break;
    	}
    	//恢复默认画刷
    	pDC->SelectObject(pOldBrush);
    	
    }
    
    void CMFCdraw2View::OnUpdateDrawElipse(CCmdUI* pCmdUI) 
    {
    	// TODO: Add your command update UI handler code here
    	pCmdUI->SetRadio(m_nType==3);//更改选中的状态
    }
    
    void CMFCdraw2View::OnUpdateDrawLine(CCmdUI* pCmdUI) 
    {
    	// TODO: Add your command update UI handler code here
    	pCmdUI->SetRadio(m_nType==1);
    }
    
    void CMFCdraw2View::OnUpdateDrawRect(CCmdUI* pCmdUI) 
    {
    	// TODO: Add your command update UI handler code here
    	pCmdUI->SetRadio(m_nType==2);
    }

    效果:






    转载于:https://www.cnblogs.com/yfceshi/p/7159200.html

    展开全文
  • 面向对象 MFC 画图,移动等操作...面向对象 MFC 画图,移动等操作...面向对象 MFC 画图,移动等操作...面向对象 MFC 画图,移动等操作...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,583
精华内容 3,033
关键字:

mfc画图