Windows Form Bai 6

download Windows Form Bai 6

of 58

Transcript of Windows Form Bai 6

  • 7/29/2019 Windows Form Bai 6

    1/58

    i Hc S Phm Tp. H Ch MinhKhoa Ton Tin Hc LP TRNH WINDOWS

    Thvin ha GDI(Graphics Device Interface)

    Trn Ngc Bo

    Email: [email protected]

    Lp trnh ha vi thvin GDI

    mailto:[email protected]:[email protected]
  • 7/29/2019 Windows Form Bai 6

    2/58

    Tran Ngoc Bao 2 Dai hoc Su Pham TP.HCM

    TM HIU NG DNG PAINT

    Chn i tngDi chuyn i tng

    Lu trcc i tng

    V cc i tng trong GDI Line

    Rectangle

    Circle

  • 7/29/2019 Windows Form Bai 6

    3/58

    Tran Ngoc Bao 3 Dai hoc Su Pham TP.HCM

    TM HIU NG DNG PAINT

    Chn i tng

    Di chuyn i tng

    Lu trcc i tng

    V cc i tng trong GDI Line

    Rectangle Circle

  • 7/29/2019 Windows Form Bai 6

    4/58

    Tran Ngoc Bao 4 Dai hoc Su Pham TP.HCM

    VI TNG

    Demo chuong trinh Paint

  • 7/29/2019 Windows Form Bai 6

    5/58

    Tran Ngoc Bao 5 Dai hoc Su Pham TP.HCM

    TM HIU NG DNG PAINT

    Chn i tng

    Di chuyn i tng

    Lu trcc i tng

    V cc i tng trong GDI Line

    Rectangle Circle

  • 7/29/2019 Windows Form Bai 6

    6/58Tran Ngoc Bao 6 Dai hoc Su Pham TP.HCM

    CHN I TNG

  • 7/29/2019 Windows Form Bai 6

    7/58Tran Ngoc Bao 7 Dai hoc Su Pham TP.HCM

    CHN I TNG - NG THNG

    V mt ton hc- on thng c to bi 2 im P(xP,yP),Q(xQ,yQ)

    - Gi M(xM, yM) l v tr ca chut

    Chn ng thng tng ng vi vic di chuyn chut v click ln ng thng PQTa M ca chut nm trn ng thng PQ hay M PQ

    P(xP,yP)

    Q(xQ,yQ)

    M(xM,yM)

    P(xP,yP)

    Q(xQ,yQ)

  • 7/29/2019 Windows Form Bai 6

    8/58Tran Ngoc Bao 8 Dai hoc Su Pham TP.HCM

    V mt ton hc

    - Phng trnh chnh tc ng thng PQ

    P

    Q

    CHN I TNG - NG THNG

    QP

    P

    QP

    P

    yy

    yy

    xx

    xx

    =

    Ax + By + C = 0

    A = yP yQB = xQ xPC = xP*yQ xQ*yP

  • 7/29/2019 Windows Form Bai 6

    9/58Tran Ngoc Bao 9 Dai hoc Su Pham TP.HCM

    V mt ton hc- Phng trnh chnh tc ng thng PQ

    CHN I TNG - NG THNG

    Ax + By + C = 0 (d)A = yP yQB = xQ xPC = xP*yQ xQ*yP

    P

    Q

    M

    Ta M ca chut nm trn ng thng PQ hay M PQKhong cch t M n PQ bng 0

    022

    =

    +

    ++

    BA

    CByAxMM

  • 7/29/2019 Windows Form Bai 6

    10/58Tran Ngoc Bao 10 Dai hoc Su Pham TP.HCM

    V mt ton hc- M thuc on PQ M tha 3 iu kin sau

    CHN I TNG - NG THNG

    P

    QM

    022

    =

    +

    ++

    BA

    CByAx MM

    xP xM xQ

    yP yM yQ

    Vi Ax + By + C = 0 (d)

    l phng trnh ng thng qua 2 im PQ

  • 7/29/2019 Windows Form Bai 6

    11/58Tran Ngoc Bao 11 Dai hoc Su Pham TP.HCM

    Ci t chng trnh- M thuc on PQ M tha 3 iu kin sau

    CHN I TNG - NG THNG

    P

    Q

    M

    022 =+

    ++

    BA

    CByAx MM

    xmin

    xM

    xmaxymin yM ymax

    Vi

    - Ax + By + C = 0 (d)l phng trnh ng thng qua 2 im PQ

    - xmin = min(xP,xQ), xmax = max(xP,xQ)

    - ymin = min(yP,yQ), ymax = max(yP,yQ)

    P

    Q

    M

  • 7/29/2019 Windows Form Bai 6

    12/58Tran Ngoc Bao 12 Dai hoc Su Pham TP.HCM

    CHN NG THNG - DEMO H s A, B, C ca phng trnh ng thng PQ

    void CGDISampleView::LineEquation(CPoint point1, CPoint point2,long &A, long &B,

    long &C)

    {

    A = Q.y - P.y;B = P.x - Q.x;

    C = (long)P.y*Q.x - (long)P.x*Q.y;

    }

    int CGDISampleView::LineDistance(CPoint M, CPoint P, CPoint Q)

    {

    long A,B,C;

    LineEquation(P,Q,A,B,C);

    double kc = abs(A*M.x+B*M.y+C)/sqrt(A*A+B*B);

    return int(kc);

    }

    Khong cch tim M n ng thng PQ

    Ax + By + C = 0 (d)

    A = yP yQB = xQ xPC = xP*yQ xQ*yP

    022

    =

    +

    ++

    BA

    CByAx MM

  • 7/29/2019 Windows Form Bai 6

    13/58Tran Ngoc Bao 13 Dai hoc Su Pham TP.HCM

    CHN NG THNG - DEMO Kim tra iu kin M PQ

    BOOL CGDISampleView::Between(CPoint M, CPoint P, CPoint Q)

    {

    const constDist = 5;

    int x1,y1,x2,y2;x2 = max(P.x,Q.x) + constDist;

    x1 = min(P.x,Q.x);

    y2 = max(P.y,Q.y) + constDist;

    y1 = min(P.y,Q.y);if ((M.x=x1)&&(M.y=y1))

    return true;

    return false;

    }

    xmin xM xmax

    ymin yM ymax

    Vi

    - xmin = min(xP,xQ), xmax = max(xP,xQ)

    - ymin = min(yP,yQ), ymax = max(yP,yQ)

  • 7/29/2019 Windows Form Bai 6

    14/58Tran Ngoc Bao 14 Dai hoc Su Pham TP.HCM

    CHN NG THNG - DEMO

    Kim tra im M PQBOOL CGDISampleView::ContainsInBorder(CPoint M, CPoint P, CPoint Q)

    {

    const constDist = 5;

    if ((Between(M,P,Q)) && (LineDistance(M,P,Q)

  • 7/29/2019 Windows Form Bai 6

    15/58Tran Ngoc Bao 15 Dai hoc Su Pham TP.HCM

    CHN NG THNG - DEMO

    V hnh ch nht ti im P

    V hnh ch nht ti im Q

  • 7/29/2019 Windows Form Bai 6

    16/58Tran Ngoc Bao 16 Dai hoc Su Pham TP.HCM

    CHN NG THNG - DEMOvoid CGDISampleView::ShowSelectedLine(CPoint point)

    {

    CClientDC dc(this);

    CRect *ptrRect;

    const WIDTH = 4;

    int nOldMode = dc.SetROP2(R2_NOTXORPEN);

    CGdiObject *pOldBrush = dc.SelectStockObject(NULL_BRUSH);

    //Ve 2 dau cua diem chon

    CPoint p1,p2;

    p1 = ptrRect->TopLeft();

    p2 = ptrRect->BottomRight();

    dc.Rectangle(p1.x-WIDTH,p1.y-WIDTH,p1.x+WIDTH,p1.y+WIDTH);

    dc.Rectangle(p2.x-WIDTH,p2.y-WIDTH,p2.x+WIDTH,p2.y+WIDTH);

    dc.SelectObject(pOldBrush);

    dc.SetROP2(nOldMode);

    dc.MoveTo(ptrRect->TopLeft());

    dc.LineTo(ptrRect->BottomRight());

    }

  • 7/29/2019 Windows Form Bai 6

    17/58Tran Ngoc Bao 17 Dai hoc Su Pham TP.HCM

    CHN HNH CHNHT RNG

  • 7/29/2019 Windows Form Bai 6

    18/58Tran Ngoc Bao 18 Dai hoc Su Pham TP.HCM

    CHN HNH CHNHT RNG

    V mt ton hcA

    D C

    B

    M

    - Kim tra im M AB

    - Kim tra im M BC- Kim tra im M CD

    - Kim tra im M DA

    A

    D

    C

    B

    M

  • 7/29/2019 Windows Form Bai 6

    19/58Tran Ngoc Bao 19 Dai hoc Su Pham TP.HCM

    CHN HNH TRN

    V mt ton hc

    M(XM,YM)

    O(XO,YO)

    R

    Phng trnh ng trn (C) tm O bn knh R

    (x - xo)2 + (y yo)2 = R2 (c)

    M thuc ng trn (C)

    ta im M(xM,yM) tha phng trnh (C)

    (xM - xo)2 + (yM yo)2 = R2 (c)

  • 7/29/2019 Windows Form Bai 6

    20/58Tran Ngoc Bao 20 Dai hoc Su Pham TP.HCM

    CHN HNH TRN

    Ci t chng trnh

    M(XM,YM)

    O(XO,YO)

    R

    Phng trnh ng trn (C) tm O bn knh R

    (x - xo)2 + (y yo)2 = R2 (c)

    M thuc ng trn (C)

    ta im M(xM,yM) tha phng trnh (C)

    R2 - (xM - xo)2 + (yM yo)2 R2 +

  • 7/29/2019 Windows Form Bai 6

    21/58Tran Ngoc Bao 21 Dai hoc Su Pham TP.HCM

    CHN HNH CHNHT C T MU

    A

    D C

    B

    M

    xA xM xC

    yA yM yC

    A

    D

    C

    B

    M

    Lm th no xc nh c im Mnm trong HCN ny hay khng ?

  • 7/29/2019 Windows Form Bai 6

    22/58Tran Ngoc Bao 22 Dai hoc Su Pham TP.HCM

    CHN HNH TRN C T MU

    M(XM,YM)

    O(XO,YO)

    R

    Phng trnh ng trn (C) tm O bn knh R

    (x - xo)2 + (y yo)2 = R2 (c)

    M thuc ng trn (C)

    ta im M(xM,yM) tha phng trnh (C)

    (xM - xo)2 + (yM yo)2 < R2 (c)

  • 7/29/2019 Windows Form Bai 6

    23/58

    Tran Ngoc Bao 23 Dai hoc Su Pham TP.HCM

    CHN HNH TRN C T MU

    Ci t chng trnh

    M(XM,YM)

    O(XO,YO)

    R

    Phng trnh ng trn (C) tm O bn knh R

    (x - xo)2 + (y yo)2 = R2 (c)

    M thuc ng trn (C)

    ta im M(xM,yM) tha phng trnh (C)

    (xM - xo)2 + (yM yo)2 R2 +

  • 7/29/2019 Windows Form Bai 6

    24/58

    Tran Ngoc Bao 24 Dai hoc Su Pham TP.HCM

    CHN A GIC BT K C T MU

    a gic li a gic lm

    M

    M

    M

    M

    M

  • 7/29/2019 Windows Form Bai 6

    25/58

    Tran Ngoc Bao 25 Dai hoc Su Pham TP.HCM

    CHN A GIC BT K C T MU

    a gic li

    M

    M

    K

    K

    M

    M

    L

    L

    K

    K

    - iu kin M nm trong a gic ?

    - iu kin M nm ngoi a gic ?

    C 1 giao im

    C 1 giao im

    C 2 giao im

    C 2 giao im

  • 7/29/2019 Windows Form Bai 6

    26/58

    Tran Ngoc Bao 26 Dai hoc Su Pham TP.HCM

    CHN A GIC BT K C T MU

    a gic lm

    M

    M

    M

    K

    M

    C 1 giao im

    C 0 giao im

    MC 4 giao im

    C 4 giao im

    C 3 giao im

    M

    M

    C 0 giao im

    - iu kin Mnm trong agic ?

    - iu kin Mnm ngoi a

    gic ?

  • 7/29/2019 Windows Form Bai 6

    27/58

    Tran Ngoc Bao 27 Dai hoc Su Pham TP.HCM

    CHN A GIC BT K C T MU

    M

    M

    M

    M

    M

    - iu kin M nm trong a gic s giao im ca ng

    thng k tM n cc cnh ca a gi l mt s l: 1, 3, 5,..

    - iu kin M nm ngoi a gic s giao im ca ngthng k tM n cc cnh ca a gi l mt s chn: 0, 2, 4,

  • 7/29/2019 Windows Form Bai 6

    28/58

    Tran Ngoc Bao 28 Dai hoc Su Pham TP.HCM

    XC NH GIAO IM GIA 2 NGTHNG

    K

    (d1): A1x + B1y + C1 = 0

    (d2): A2x + B2y + C2 = 0Giao im ca (d1) v (d2) lnghim ca h phng trnh

  • 7/29/2019 Windows Form Bai 6

    29/58

    Tran Ngoc Bao 29 Dai hoc Su Pham TP.HCM

    TM HIU NG DNG PAINT

    Chn i tngDi chuyn i tng

    Lu trcc i tng

    V cc i tng trong GDI Line

    Rectangle Circle

  • 7/29/2019 Windows Form Bai 6

    30/58

    Tran Ngoc Bao 30 Dai hoc Su Pham TP.HCM

    DI CHUYN I TNG - NG THNG

    Di chuyn ng thng AB thc cht l php tnh tin 2 imAB: A A

    B B

    A

    B

    A

    B

  • 7/29/2019 Windows Form Bai 6

    31/58

    Tran Ngoc Bao 31 Dai hoc Su Pham TP.HCM

    DI CHUYN I TNG PHP TNH TIN

    void TRANSLATION(CPoint &Destination,CPoint Source,int dx,int dy)

    {

    Destination.x=Source.x+dx;Destination.y=Source.y+dy;

    }

    A(xA,yA)

    A(xA,yA)

    dx

    dy

    xA = xA + dx

    yA = yA + dy

  • 7/29/2019 Windows Form Bai 6

    32/58

    Tran Ngoc Bao 32 Dai hoc Su Pham TP.HCM

    void CGDISampleView::MoveSelectedObject(CPoint point)

    {

    CRect *ptrRect;

    ptrRect = pDoc->GetLine(m_nLineSel);

    //Xa ng c

    dc.MoveTo(ptrRect->TopLeft());

    dc.LineTo(ptrRect->BottomRight());

    //Tnh tin n v tr mi

    int dx, dy;

    dx = -m_ptStartSel.x + point.x;

    dy = -m_ptStartSel.y + point.y;

    ptrRect->top = ptrRect->top + dy; ptrRect->left = ptrRect->left + dx;

    ptrRect->bottom = ptrRect->bottom + dy; ptrRect->right = ptrRect->right + dx;

    //Vng midc.MoveTo(ptrRect->TopLeft()); dc.LineTo(ptrRect->BottomRight());

    m_ptStartSel = point;

    }

    DI CHUYN I TNG - NG THNG

  • 7/29/2019 Windows Form Bai 6

    33/58

    Tran Ngoc Bao 33 Dai hoc Su Pham TP.HCM

    DI CHUYN I TNG - NG TRN

    Di chuyn ng trn tm O bn knh R thc cht l tnh tintm O n v tr O

    O(xo,yo)O(xo,yo)

  • 7/29/2019 Windows Form Bai 6

    34/58

    Tran Ngoc Bao 34 Dai hoc Su Pham TP.HCM

    DI CHUYN I TNG

    Di chuyn hnh chnht

    Di chuyn a gic

  • 7/29/2019 Windows Form Bai 6

    35/58

    Tran Ngoc Bao 35 Dai hoc Su Pham TP.HCM

    DI CHUYN I TNG CI T CHNG TRNH

    X l skin MouseDown

    X l skin MouseMove

    X l skin MouseUp

    - Chn i tng t v tr ca chut

    - Ly ta im u (ta ca chut)

    - Tnh tin i tng n v tr hin hnh ca chut

    - Xa i tng c

    - Vi tng mi

    - Cp nht cc thuc tnh (ta ) ca i tng

    - Gi hm Invalidate pht sinh s kin OnDraw

  • 7/29/2019 Windows Form Bai 6

    36/58

    Tran Ngoc Bao 36 Dai hoc Su Pham TP.HCM

    TM HIU NG DNG PAINT

    Chn i tngDi chuyn i tng

    Lu trcc i tng

    V cc i tng trong GDI Line

    Rectangle Circle

  • 7/29/2019 Windows Form Bai 6

    37/58

    Tran Ngoc Bao 37 Dai hoc Su Pham TP.HCM

    QUN L LU TRI TNG

    CShape

    CRectangleCLine

    Class CShape : public CObject{

    };

    S lp i tng

    Class CLine : public CShape

    {

    };

    Class CRectangle : public CShape

    {

    };

  • 7/29/2019 Windows Form Bai 6

    38/58

    Tran Ngoc Bao 38 Dai hoc Su Pham TP.HCM

    QUN L LU TRI TNG

    s dng kiu d liu CTypedPtrList phi thm vo tp tin Stdafx.h th vinsau:

    #include

    Class CGDISampleDoc : public CDocument

    {

    CTypedPtrList m_aSO;

    void Add(CShape &obj);

    };

    void CGDISampleDoc::Add(CShape &obj){

    CShape *temp;

    obj.DuplicateObject(temp);

    m_aSO.AddTail(temp);

    }

  • 7/29/2019 Windows Form Bai 6

    39/58

    Tran Ngoc Bao 39 Dai hoc Su Pham TP.HCM

    QUN L LU TRI TNG

    void CGDISampleView::OnDraw(CDC* pDC){

    CTNBPaintDoc* pDoc = GetDocument();

    ASSERT_VALID(pDoc);

    //V cc i tng: Line, Rectange

    POSITION pos=pDoc->m_aSO.GetHeadPosition();

    while (pos != NULL)

    {

    CShape *myobj = pDoc->m_aSO.GetNext(pos);

    myobj->Show(pDC,R2_COPYPEN);

    }

    }

    Lm th no myobj gi hm Show tng ng ca tng i tng:CShape, Cline, CRectangle,?

  • 7/29/2019 Windows Form Bai 6

    40/58

    Tran Ngoc Bao 40 Dai hoc Su Pham TP.HCM

    LP I TNG CShape

    class CShape : public CObject

    {

    public:

    BOOL m_bFilled; // Doi tuong co duoc to hay khong

    int m_nPenWidth; // Be rong cua but ve

    int m_nPenStyle; // Kieu but ve (SOLID,DOT,DASH,...)COLORREF m_BrushColor; // Mau to

    COLORREF m_PenColor; // Mau duong bao

    int m_nPattern; //Pattern cua doi tuong

    CShape();

    virtual ~CShape();

    };

    Thuc tnh i tng Shape

    h

  • 7/29/2019 Windows Form Bai 6

    41/58

    Tran Ngoc Bao 41 Dai hoc Su Pham TP.HCM

    class CShape : public CObject

    {

    public:virtual void Draw(CDC * pDC);

    virtual void DuplicateObject(CShape * & pObj);

    virtual void Fill(CDC * pDC);

    public:

    void Show(CDC * pDC, int nDrawMode);

    void operator =(CShape &s);

    CShape();virtual ~CShape();

    };

    LP I TNG CShape

    Cc hm ca lp CShape

    LP I TNG CSh

  • 7/29/2019 Windows Form Bai 6

    42/58

    Tran Ngoc Bao 42 Dai hoc Su Pham TP.HCM

    LP I TNG CShape

    Cc hm ca lp CShapevoid CShape::DuplicateObject(CShape *&pObj)

    {

    pObj=new CShape();

    pObj->operator=(*this);

    }

    void CShape::operator =(CShape & s)

    {

    m_BrushColor = s.m_BrushColor;

    m_bFilled = s.m_bFilled;

    m_PenColor = s.m_PenColor;

    m_nPenStyle = s.m_nPenStyle;m_nPenWidth = s.m_nPenWidth;

    m_nPattern=s.m_nPattern;

    }

    LP I TNG CSh

  • 7/29/2019 Windows Form Bai 6

    43/58

    Tran Ngoc Bao 43 Dai hoc Su Pham TP.HCM

    LP I TNG CShape

    Cc hm ca lp CShapeCShape::CShape()

    {

    m_PenColor = RGB(0,0,0);m_BrushColor = RGB(0,128,0);

    m_nPenStyle = PS_SOLID;

    m_nPenWidth = 1;

    m_bFilled = false;

    m_nPattern=HS_SOLID;

    }

    void CShape::Draw(CDC *pDC)

    {

    }void CShape::Fill(CDC *pDC)

    {

    }

    LP I TNG CLi

  • 7/29/2019 Windows Form Bai 6

    44/58

    Tran Ngoc Bao 44 Dai hoc Su Pham TP.HCM

    LP I TNG CLine

    Cc thnh phn ca lp CLineclass CLine : public CShape

    {

    public:

    CPoint point2;

    CPoint point1;

    public:

    void Draw(CDC * pDC);void operator =(CLine &l);

    void DuplicateObject(CShape*& pObj);

    void SetPoint(int nIndex, CPoint p);

    CLine();CLine(CPoint p1,CPoint p2);

    virtual ~CLine();

    };

    LP I TNG CLi

  • 7/29/2019 Windows Form Bai 6

    45/58

    Tran Ngoc Bao 45 Dai hoc Su Pham TP.HCM

    LP I TNG CLine

    Cc thnh phn ca lp CLineCLine::CLine()

    {

    m_PenColor = RGB(255,0,0);

    m_BrushColor = RGB(0,128,0);

    m_nPenStyle = PS_SOLID;

    m_nPenWidth = 2;

    m_bFilled = false;

    m_nPattern=HS_SOLID;

    }

    CLine::CLine(CPoint p1,CPoint p2)

    {

    point1 = p1;

    point2 = p2;

    }

  • 7/29/2019 Windows Form Bai 6

    46/58

    LP I TNG CLi

  • 7/29/2019 Windows Form Bai 6

    47/58

    Tran Ngoc Bao 47 Dai hoc Su Pham TP.HCM

    LP I TNG CLine

    Cc thnh phn ca lp CLinevoid CLine::Draw(CDC *pDC)

    {

    //Tao mot pen moiCPen newPen(m_nPenStyle,m_nPenWidth,m_PenColor);

    CPen *pOldPen = pDC->SelectObject(&newPen);

    //Ve duong thangpDC->MoveTo(point1.x,point1.y);

    pDC->LineTo(point2.x,point2.y);

    pDC->SelectObject(pOldPen);

    }

    LP I TNG CR t l

  • 7/29/2019 Windows Form Bai 6

    48/58

    Tran Ngoc Bao 48 Dai hoc Su Pham TP.HCM

    LP I TNG CRectangle

    Cc thnh phn ca lp CRectangleclass CRectangle : public CShape{

    public:

    CPoint point2;

    CPoint point1;

    public:

    void operator =(CRectangle & l);void DuplicateObject(CShape * & pObj);

    void Draw(CDC * pDC);

    void SetPoint(int nIndex, CPoint p);CRectangle();

    virtual ~CRectangle();

    };

    LP I TNG CR t l

  • 7/29/2019 Windows Form Bai 6

    49/58

    Tran Ngoc Bao 49 Dai hoc Su Pham TP.HCM

    LP I TNG CRectangle

    Cc thnh phn ca lp CRectanglevoid CRectangle::operator =(CRectangle & l)

    {

    CShape::operator =(l);point1=l.point1;

    point2=l.point2;

    }

    void CRectangle::DuplicateObject(CShape * & pObj)

    {

    //Ham tao mot doi tuong moipObj=new CRectangle();

    ((CRectangle*)pObj)->operator=(*this);

    }

    LP I TNG CR t l

  • 7/29/2019 Windows Form Bai 6

    50/58

    Tran Ngoc Bao 50 Dai hoc Su Pham TP.HCM

    LP I TNG CRectangle

    Cc thnh phn ca lp CRectangle

    void CRectangle::Draw(CDC * pDC)

    {

    CPen newPen(m_nPenStyle,m_nPenWidth,m_PenColor);

    CPen *pOldPen = pDC->SelectObject(&newPen);

    //Ve hinh chu nhat

    pDC->Rectangle(point1.x,point1.y,point2.x,point2.y);

    pDC->SelectObject(pOldPen);

    }

    void CRectangle::Fill(CDC * pDC)

    {

    }

    TO CC I TNG

  • 7/29/2019 Windows Form Bai 6

    51/58

    Tran Ngoc Bao 51 Dai hoc Su Pham TP.HCM

    TO CC I TNG

    To & vng thng CLinevoid CGDISampleView::OnLine()

    {

    CGDISampleDoc* pDoc = GetDocument();

    CPoint point1(100,100);

    CPoint point2(200,200);

    line.SetPoint(1,point1);

    line.SetPoint(2,point2);pDoc->Add(line);

    Invalidate();

    }

    Class CGDISampleDoc : public CDocument

    {

    CTypedPtrList m_aSO;

    void Add(CShape &obj);

    };

    TO CC I TNG

  • 7/29/2019 Windows Form Bai 6

    52/58

    Tran Ngoc Bao 52 Dai hoc Su Pham TP.HCM

    TO CC I TNG

    To & v hnh chnht CRectangle

    Class CGDISampleDoc : public CDocument

    {

    CTypedPtrList m_aSO;

    void Add(CShape &obj);

    };

    void CGDISampleView::OnRectangle()

    {

    CGDISampleDoc * pDoc = GetDocument();CPoint point1(300,300);

    CPoint point2(400,400);

    rectangle.SetPoint(1,point1);

    rectangle.SetPoint(2,point2);pDoc->Add(rectangle);

    Invalidate();

    }

    TM HIU NG DNG PAINT

  • 7/29/2019 Windows Form Bai 6

    53/58

    Tran Ngoc Bao 53 Dai hoc Su Pham TP.HCM

    TM HIU NG DNG PAINT

    Chn i tng

    Di chuyn i tng Lu trcc i tng

    V cc i tng trong GDI Line

    Rectangle

    Circle

    Cc x l khc Resize

    Cut, Copy, Paste

  • 7/29/2019 Windows Form Bai 6

    54/58

    Cc thao tc khc Resize

  • 7/29/2019 Windows Form Bai 6

    55/58

    Tran Ngoc Bao 55 Dai hoc Su Pham TP.HCM

    Cc thao tc khc - Resize

    Cc thao tc khc Resize

  • 7/29/2019 Windows Form Bai 6

    56/58

    Tran Ngoc Bao 56 Dai hoc Su Pham TP.HCM

    Cc thao tc khc - Resize

    Cc thao tc khc Resize

  • 7/29/2019 Windows Form Bai 6

    57/58

    Tran Ngoc Bao 57 Dai hoc Su Pham TP.HCM

    Cc thao tc khc - Resize

  • 7/29/2019 Windows Form Bai 6

    58/58