win程序设计笔记6
继续画图矩形:
Rectangle (hdc, 1, 1, 5, 4) ;
椭圆:
Ellipse (hdc, xLeft, yTop, xRight, yBottom) ;
圆角矩形:
RoundRect ( hdc, xLeft, yTop, xRight, yBottom,
xCornerEllipse, yCornerEllipse) ;
其它:
Arc (hdc, xLeft, yTop, xRight, yBottom, xStart, yStart, xEnd, yEnd) ;
Chord (hdc, xLeft, yTop, xRight, yBottom, xStart, yStart, xEnd, yEnd) ;
Pie (hdc, xLeft, yTop, xRight, yBottom, xStart, yStart, xEnd, yEnd) ;
画曲线:
PolyBezier (hdc, apt, iCount) ;
或
PolyBezierTo (hdc, apt, iCount) ;
一些关于画笔的内容:
Windows程式以代号来使用画笔。 Windows表头档案WINDEF.H中包含一个叫做HPEN的型态定义,即画笔的代号,可以定义这个型态的变数(例如hPen):
HPEN hPen ;
呼叫GetStockObject,可以获得现有画笔的代号。例如,假设您想使用名为WHITE_PEN的现有画笔,可以如下取得画笔的代号:
hPen = GetStockObject (WHITE_PEN) ;
现在必须将画笔选进装置内容:
SelectObject (hdc, hPen) ;
目前的画笔是白色。在这个呼叫後,您画的线将使用WHITE_PEN,直到您将另外一个画笔选进装置内容或者释放装置内容代号为止。
您也可以不定义hPen变数,而将GetStockObject和SelectObject呼叫合并成一个叙述:
SelectObject (hdc, GetStockObject (WHITE_PEN)) ;
如果想恢复到使用BLACK_PEN的状态,可以用一个叙述取得这种画笔的代号,并将其选进装置内容:
SelectObject (hdc, GetStockObject (BLACK_PEN)) ;
SelectObject的传回值是此呼叫前装置内容中的画笔代号。如果启动一个新的装置内容并呼叫
hPen = SelectObject (hdc, GetStockobject (WHITE_PEN)) ;
则装置内容中的目前画笔将为WHITE_PEN,变数hPen将会是BLACK_PEN的代号。以後通过呼叫
SelectObject (hdc, hPen) ;
就能够将BLACK_PEN选进装置内容。
画笔的建立、选择和删除
hPen = CreatePen (iPenStyle, iWidth, crColor) ;
改变Windows用来填入空隙的背景色:
SetBkColor (hdc, crColor) ;
将背景模式转换为TRANSPARENT,可以阻止Windows填入空隙:
SetBkMode (hdc, TRANSPARENT) ;
设定新的绘图模式:
SetROP2 (hdc, iDrawMode) ;
iDrawMode = GetROP2 (hdc) ;
绘制填入区域相关
Windbws将HBRUSH定义为画刷的代号,所以可以先定义一个画刷代号变数:
HBRUSH hBrush ;
您可以通过呼叫GetStockObject来取得GRAY_BRUSH的代号:
hBrush = GetStockObject (GRAY_BRUSH) ;
您可以呼叫SelectObject将它选进装置内容:
SelectObject (hdc, hBrush) ;
现在,如果您要画上表中的任一个图形,则其内部将为灰色。
如果您想画一个没有边界框的图形,可以将NULL_PEN选进装置内容:
SelectObject (hdc, GetStockObject (NULL_PEN)) ;
如果您想画出图形的边界框,但不填入内部,则将NULL_BRUSH选进装置内容:
SelectObject (hdc, GetStockobject (NULL_BRUSH) ;
Polygon函数和多边形填入方式
Polygon (hdc, apt, iCount) ;
PolyPolygon (hdc, apt, aiCounts, iPolyCount) ;
SetPolyFillMode (hdc, iMode) ;
用画刷填入内部
建立逻辑画刷:
hBrush = CreateSolidBrush (crColor) ;
建立影线画刷的函式为:
hBrush = CreateHatchBrush (iHatchStyle, crColor) ;
hBrush = CreateBrushIndirect (&logbrush) ;
使用SelectObject将该画刷选进装置内容:
SelectObject (hdc, hBrush) ;
然後,您可以使用DeleteObject函式删除所建立的画刷:
DeleteObject (hBrush) ;
取得画刷的信息,可以呼叫GetObject:
GetObject (hBrush, sizeof (LOGBRUSH), (LPVOID) &logbrush) ;
:Q 很晕啊...慢慢来
页:
[1]