1
1
LẬP TRÌNH C++
LẬP TRÌNH C++
§
§
12.
12.
Một số hàm đồ họa cơ sở
Một số hàm đồ họa cơ sở
GDI: Graphics Device Interface
GDI: Graphics Device Interface
(Giao diện thiết bị đồ họa)
(Giao diện thiết bị đồ họa)
HDC: Handle Device Context (Kiểu
HDC: Handle Device Context (Kiểu
dữ liệu ngữ cảnh thiết bị)
dữ liệu ngữ cảnh thiết bị)
2
2
I. Nhóm hàm vẽ
I. Nhóm hàm vẽ
a. COLORREF SetPixel(int nXPos, int nYPos, COLORREF
a. COLORREF SetPixel(int nXPos, int nYPos, COLORREF
clrRef);
clrRef);
Vẽ một điểm màu clrRef tại vị trí (nXPos, nYPos) lên DC. Giá
Vẽ một điểm màu clrRef tại vị trí (nXPos, nYPos) lên DC. Giá
trị trả về là màu của điểm (nXPos, nYPos) hoặc -1 nếu điểm
trị trả về là màu của điểm (nXPos, nYPos) hoặc -1 nếu điểm
này nằm ngoài vùng hiển thị.
này nằm ngoài vùng hiển thị.
Trong đó COLORREF là kiểu dữ liệu màu :
Trong đó COLORREF là kiểu dữ liệu màu :
COLORREF RGB (int red, int green, int blue);
COLORREF RGB (int red, int green, int blue);
red, green, blue : có giá trị từ 0 – 255
red, green, blue : có giá trị từ 0 – 255
b. COLORREF GetPixel(int nXPos, int nYPos);
b. COLORREF GetPixel(int nXPos, int nYPos);
Trả về giá trị màu tại vị trí (nXPos, nYPos)
Trả về giá trị màu tại vị trí (nXPos, nYPos)
trả về -1 nếu điểm này nằm ngoài vùng hiển thị.
trả về -1 nếu điểm này nằm ngoài vùng hiển thị.
c. DWORD MoveTo(int x, int y);
c. DWORD MoveTo(int x, int y);
Di chuyển bút vẽ đến tọa độ (x, y) trên DC. Giá trị trả về là tọa
Di chuyển bút vẽ đến tọa độ (x, y) trên DC. Giá trị trả về là tọa
độ cũ của bút vẽ, x = LOWORD, y = HIWORD.
độ cũ của bút vẽ, x = LOWORD, y = HIWORD.
3
3
d.
d.
BOOL LineTo
BOOL LineTo
(
(
int
int
xEnd,
xEnd,
int
int
yEnd);
yEnd);
Vẽ đoạn thẳng từ vị trí hiện hành đến vị trí (xEnd, yEnd) trên
Vẽ đoạn thẳng từ vị trí hiện hành đến vị trí (xEnd, yEnd) trên
DC. Hàm trả về TRUE nếu thành công, FALSE nếu thất bại.
DC. Hàm trả về TRUE nếu thành công, FALSE nếu thất bại.
e.
e.
BOOL Polyline
BOOL Polyline
(
(
const POINT FAR
const POINT FAR
*lpPoints,
*lpPoints,
int
int
nPoints);
nPoints);
Vẽ đường gấp khúc lên DC bằng các đoạn thẳng liên tiếp, số
Vẽ đường gấp khúc lên DC bằng các đoạn thẳng liên tiếp, số
đỉnh là nPoints với tọa độ các đỉnh được xác định trong
đỉnh là nPoints với tọa độ các đỉnh được xác định trong
lpPoints. Hàm trả về TRUE nếu thành công, FALSE nếu thất
lpPoints. Hàm trả về TRUE nếu thành công, FALSE nếu thất
bại.
bại.
f.
f.
BOOL Polygon
BOOL Polygon
(
(
const POINT FAR
const POINT FAR
*lpPoints,
*lpPoints,
int
int
nPoints);
nPoints);
Vẽ đa giác có nPoints đỉnh, tọa độ các đỉnh được xác định bởi
Vẽ đa giác có nPoints đỉnh, tọa độ các đỉnh được xác định bởi
lpPoints. Hàm trả về TRUE nếu thành công, FALSE nếu thất
lpPoints. Hàm trả về TRUE nếu thành công, FALSE nếu thất
bại.
bại.
g.
g.
BOOL Rectangle
BOOL Rectangle
(
(
int
int
left,
left,
int
int
top,
top,
int
int
right,
right,
int
int
bottom);
bottom);
Vẽ hình chữ nhật có tọa độ là left, top, right, bottom lên DC.
Vẽ hình chữ nhật có tọa độ là left, top, right, bottom lên DC.
h.
h.
SetViewportOrg(x,y);
SetViewportOrg(x,y);
4
4
h.
h.
HPEN CreatePen
HPEN CreatePen
(
(
int
int
penStyle,
penStyle,
int
int
penWidth,
penWidth,
COLORREF
COLORREF
penColor);
penColor);
Tạo bút vẽ có kiểu penStyle, độ dày nét vẽ là penWidth, màu
Tạo bút vẽ có kiểu penStyle, độ dày nét vẽ là penWidth, màu
penColor. Hàm trả về handle của bút vẽ nếu thành công và trả
penColor. Hàm trả về handle của bút vẽ nếu thành công và trả
về NULL nếu thất bại. Các giá trị của penStyle như sau :
về NULL nếu thất bại. Các giá trị của penStyle như sau :
PS_INSIDEFRAME
Không hiển thị PS_NULL
PS_DASHDOTDOT
PS_DASHDOT
PS_DOT
PS_DASH
PS_SOLID
Giải thích Giá trị
Các kiểu bút vẽ penStyle
5
5
II. Nhóm hàm tô màu
II. Nhóm hàm tô màu
a. HBRUSH CreateSolidBrush(COLORREF cRef);
a. HBRUSH CreateSolidBrush(COLORREF cRef);
Tạo mẫu tô đặc với màu cRef.
Tạo mẫu tô đặc với màu cRef.
b.
b.
HBRUSH CreateHatchBrush
HBRUSH CreateHatchBrush
(
(
int
int
bStyle,
bStyle,
COLORREF
COLORREF
cRef);
cRef);
Tạo mẫu tô dạng lưới kiểu bStyle với màu cRef.
Tạo mẫu tô dạng lưới kiểu bStyle với màu cRef.
Các kiểu bStyle :
Các kiểu bStyle :
HS_HORIZONTAL ;
HS_HORIZONTAL ;
HS_VERTICAL
HS_VERTICAL
HS_FDIAGONAL ;
HS_FDIAGONAL ;
HS_BDIAGONAL
HS_BDIAGONAL
HS_CROSS ;
HS_CROSS ;
HS_DIAGCROSS
HS_DIAGCROSS
c.
c.
BOOL FloodFill
BOOL FloodFill
(
(
int
int
xStart,
xStart,
int
int
yStart,
yStart,
COLORREF
COLORREF
cRef);
cRef);
Tô màu một vùng kín, màu đường biên là cRef.
Tô màu một vùng kín, màu đường biên là cRef.
d.
d.
BOOL ExtFloodFill
BOOL ExtFloodFill
(
(
int
int
xStart,
xStart,
int
int
yStart,
yStart,
COLORREF
COLORREF
cRef,
cRef,
UINT
UINT
fillStyle);
fillStyle);
Tô màu một vùng kín, fillStyle quyết định cách tô :
Tô màu một vùng kín, fillStyle quyết định cách tô :
FLOODFILLBORDER: Tô màu vùng có màu đường biên là cRef.
FLOODFILLBORDER: Tô màu vùng có màu đường biên là cRef.
FLOODFILLSURFACE : Tô vùng có màu cRef.
FLOODFILLSURFACE : Tô vùng có màu cRef.