Chapter 31 Basic Form-Processing Techniques JavaServer Pages By Xue Bai.
Windows Form Bai 6
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