首页 > 代码库 > 初学mfc——画像素点 画线 画矩形

初学mfc——画像素点 画线 画矩形


    //定义坐标系


    CRect rect;
    GetClientRect(&rect);//其实现在我也不太懂这句话有什么具体意思  !@@!!



    //采用自定义的形式 窗口和视区的坐标系都自己定义
    pDC->SetMapMode(MM_ANISOTROPIC);

    //经常用的模式还有 MM_TEXT(每个逻辑坐标对应一个设备坐标 正x向右 正y向下)


    //定义视区,通过与窗口设置的比较  设置成 x正向 右 ,,y正向上                            pDC->SetWindowExt(rect.Width(),rect.Height());
    pDC->SetViewportExt(rect.Width(),-rect.Height());


    //设置视区原点,视区原点是设备坐标系下的
    pDC->SetViewportOrg(rect.Width()/2,rect.Height()/2);

    //创建画笔 ----绘制区域外边界

    画笔三要素 1、线型 2、宽度 3、颜色
    //DASH虚线 /DASHDOT点虚线/ DOT点线/SOLID
    //第三个参数是color类型 ,本质是32位的颜色数据类型,如0x0000ff(红色)
    //也可以用RGB宏来创建 RGB(255,0,0)也是红色 RGB(ff,0,0)

    创建画笔可以使用
    BOOL CreatePen(PS_DASH,1,RGB(255,0,0));

    也可以用构造函数

    CPen(npenstyle,nwidth,crcolor)

    

    
    //创建画刷-----图形内部进行填充  所以仅对闭合图形有效

    默认的画刷是白色的  所以在画矩形啊 等封闭的图形时 内部用默认的白色画刷填充,就显现不出来填充色了
    //画刷分为 1、实体画刷CreateSolidBrush(),

                2、 阴影画刷CreateHatchBrush(int nIndex,COLORREF,crColor)
    //以下三种 画刷都可以用CBrush()来创建 区别于参数个数来创建不同的画刷
    BOOL CreateSolidBrush(RGB(255,0,0));
    BOOL CreateHashBrush(HS_CROSS,0xff0000);
    //CreatePatternBrush(*pBitmap) 创建逻辑画刷  位图可以使从资源中导入的DDB位图

        使用位图画刷时 要确保位图在画刷中的相对位置不变 ,用SetBrushOrg()设置画刷起点


    //选入GDI对象 GDI对象在创建后 只有选入上下文中才能使用
    //CPen* pDC->SelectObject(CPen* cpen)
    //CBrush* pDC->SelectObject(CBrush *cbrush)
    //CBitmap* pDC->SelectObject(CBitmap * pbitmap)
    //上述三个函数 都是设置上下文类所选中的画笔、 画刷 、位图,返回的指针是指向被替换掉的画笔 、画刷、 位图的指针
    

    //绘制像素点函数 2种 1、返回画的点的RGB值SetPixel(10,10,RGB(255,0,0));

                         2、不返回RGB值 SetPixelV(10,10,RGB(255,255,0))
    COLORREF color=GetPixel(10,10);//返回 该点的RGB值

    //绘制线段  要先创建画笔 CPen *poldpen,newpen;

                newpen.CreateCPen(PS_SOLID,1,RGB(0,ff,0));

                poldpen=pDC->SelectObject(&newpen);

        2个BOOL LineTo(x,y);从当前位置划线到xy处,并改变当前位置为 xy
                //CPoint MoveTo(x,y);只是将当前位置 移动到xy,并不划线


    //绘制矩形 Rectangle

初学mfc——画像素点 画线 画矩形