1. ç»åç´ ç¹
ç»åç´ ç¹å°±æ¯è®¾ç½®åç´ ç¹çé¢è²ï¼ä»åé¢3ï¼(2)å·²ç¥éè¿å¯ç±CDCçæåå½æ°SetPixelæ¥åï¼è¯¥å½æ°çåå为ï¼
COLORREF SetPixel( int x, int y, COLORREF crColor ); æ
COLORREF SetPixel( POINT point, COLORREF crColor );
å
¶ä¸ï¼xä¸yåå«ä¸ºåç´ ç¹ç横åæ ä¸çºµåæ ï¼crColor为åç´ çé¢è²å¼ãä¾å¦
pDC->SetPixel(i, j, RGB(r, g, b));
2ï¼ç»çº¿ç¶å¾
å¨Windowsä¸ï¼çº¿ç¶å¾å¿
é¡»ç¨ç¬æ¥ç»ï¼ç¬çå建ä¸ä½¿ç¨è§åé¢ç3ï¼(3)ï¼ï¼ä¸é¢æ¯CDCç±»ä¸å¯ä»¥ç»å¶çº¿ç¶å¾ç常ç¨æåå½æ°ï¼
å½åä½ç½®ï¼è®¾ç½®å½åä½ç½®ä¸º(x, y)æpointï¼ï¼è¿åå¼ä¸ºåå½åä½ç½®çåæ ï¼
CPoint MoveTo( int x, int y ); æ CPoint MoveTo( POINT point);
ç»çº¿ï¼ä½¿ç¨DCä¸çç¬ä»å½åä½ç½®ç»çº¿å°ç¹(x, y)æpointï¼ï¼è¥æåè¿åé0å¼ï¼ï¼
BOOL LineTo( int x, int y ); æBOOL LineTo( POINT point );
ç»æ线ï¼ä½¿ç¨DCä¸çç¬ï¼ä¾æ¬¡å°ç¹æ°ç»lpPointsä¸çnCount(â¥2)个ç¹è¿æ¥èµ·æ¥ï¼å½¢æä¸æ¡æ线ï¼
BOOL Polyline( LPPOINT lpPoints, int nCount );
ç»å¤è¾¹å½¢ï¼ä¼¼ç»æ线ï¼ä½è¿ä¼å°æåçç¹ä¸ç¬¬ä¸ä¸ªç¹ç¸è¿å½¢æå¤è¾¹å½¢ï¼å¹¶ç¨DCä¸çå·å¡«å
å
¶å
é¨åºåï¼
BOOL Polygon( LPPOINT lpPoints, int nCount );
ç»ç©å½¢ï¼ä½¿ç¨DCä¸çç¬ç»å·¦ä¸è§ä¸º(x1, y1)ãå³ä¸è§ä¸º(x2,y2)æèå´ä¸º*lpRectçç©å½¢ç边线ï¼å¹¶ç¨DCä¸çå·å¡«å
å
¶å
é¨åºåï¼
BOOL Rectangle( int x1, int y1, int x2, int y2 ); æ
BOOL Rectangle( LPCRECT lpRect );
ææ¶éè¦æ ¹æ®ç¨æ·ç»å®ç两个任æç¹æ¥éæ°æé å·¦ä¸è§åå³ä¸è§çç¹ï¼ä¾å¦ï¼
rect = CRect(min(p0.x, point.x), min(p0.y, point.y), max(p0.x,point.x), max(p0.y, point.y));
ç»åè§ç©å½¢ï¼ä½¿ç¨DCä¸çç¬ç»å·¦ä¸è§ä¸º(x1, y1)ãå³ä¸è§ä¸º(x2,y2)æèå´ä¸º*lpRectçç©å½¢ç边线ï¼å¹¶ç¨å®½x3æpoint.xé«y3æpoint.yç©å½¢çå
æ¥æ¤ååè§ï¼åç¨DCä¸çå·å¡«å
å
¶å
é¨åºåï¼
BOOL RoundRect( int x1, int y1, int x2, int y2, int x3, int y3);
BOOL RoundRect( LPCRECT lpRect, POINT point );
ä¾å¦ï¼
int d = min(rect.Width(), rect.Height()) / 4;
pDC-> RoundRect(rect, CPoint(d, d));
ç»ï¼æ¤ï¼åï¼ä½¿ç¨DCä¸çç¬å¨å·¦ä¸è§ä¸º(x1, y1)ãå³ä¸è§ä¸º(x2,y2)æèå´ä¸º*lpRectçç©å½¢ä¸ç»å
æ¥ï¼æ¤ï¼åç边线ï¼å¹¶ç¨DCä¸çå·å¡«å
å
¶å
é¨åºåï¼
BOOL Ellipse( int x1, int y1, int x2, int y2 );
BOOL Ellipse( LPCRECT lpRect );
注æï¼CDCä¸æ²¡æç»åçä¸ç¨å½æ°ãå¨è¿éï¼åæ¯ä½ä¸ºæ¤åçï¼å®½é«ç¸çï¼ç¹ä¾æ¥ç»çã
ç»å¼§ï¼(x1, y1)ä¸(x2, y2)ælpRectçå«ä¹åç»ï¼æ¤ï¼åï¼(x3, y3)æptStart为弧çèµ·ç¹ï¼(x4,y4)æptEnd为弧çç»ç¹ï¼ï¼éæ¶éæ¹åæ转ï¼
BOOL Arc( int x1, int y1, int x2, int y2, int x3, int y3, intx4, int y4 );
BOOL Arc( LPCRECT lpRect, POINT ptStart, POINT ptEnd );
BOOL ArcTo(int x1, int y1, int x2, int y2, int x3, int y3, int x4,int y4);
BOOL ArcTo(LPCRECT lpRect, POINT ptStart, POINT ptEnd);
ç»å弧ï¼ï¼å
¶ä¸(x, y)为åå¿ãnRadius为åå¾ãfStartAngle为起å§è§ãfSweepAngle为弧段跨è§ï¼
BOOL AngleArc(int x, int y, int nRadius, float fStartAngle, floatfSweepAngle);
ç»å¼å¼¦ï¼åæ°çå«ä¹åä¸ï¼åªæ¯ç¨ä¸æ ¹å¼¦è¿æ¥å¼§çèµ·ç¹åç»ç¹ï¼å½¢æä¸ä¸ªå¼å½¢ï¼å¹¶ç¨DCä¸çå·å¡«å
å
¶å
é¨åºåï¼
BOOL Chord( int x1, int y1, int x2, int y2, int x3, int y3, intx4, int y4 );
BOOL Chord( LPCRECT lpRect, POINT ptStart, POINT ptEnd );
3ï¼ç»å¡«å
å¾
å¨Windowsä¸ï¼é¢ç¶å¾å¿
é¡»ç¨å·æ¥å¡«å
ï¼å·çå建ä¸ä½¿ç¨è§åé¢ç3ï¼(4)ï¼ãä¸é¢(2)ä¸çPolygonãRectangleãEllipseåChordçç»éå线ç¶å¾çå½æ°ï¼åªè¦DCä¸çå·ä¸æ¯ç©ºå·ï¼é½å¯ä»¥ç¨æ¥ç»å¯¹åºçé¢ç¶å¾ï¼è¾¹çº¿ç¨å½åç¬ç»ï¼å
é¨ç¨å½åå·å¡«å
ï¼ãä¸é¢ä»ç»çæ¯CDCç±»ä¸åªè½ç»å¶é¢ç¶å¾çå
¶ä»å¸¸ç¨æåå½æ°ï¼
ç»å¡«å
ç©å½¢ï¼ç¨æå®çå·pBrushç»ä¸ä¸ªä»¥lpRect为åºåçå¡«å
ç©å½¢ï¼æ 边线ï¼å¡«å
åºåå
æ¬ç©å½¢ç左边çåä¸è¾¹çï¼ä½ä¸å
æ¬ç©å½¢çå³è¾¹çåä¸è¾¹çï¼
void FillRect( LPCRECT lpRect, CBrush* pBrush );
ç»åè²å¡«å
ç©å½¢ï¼ä¼¼FillRectï¼ä½åªè½å¡«å
åè²ï¼ä¸è½å¡«å
æ¡çº¹åå¾æ¡ï¼
void FillSolidRect( LPCRECT lpRect, COLORREF clr );
void FillSolidRect( int x, int y, int cx, int cy, COLORREF clr);
ç»é¥¼å¾ï¼æå½¢ï¼ï¼åæ°å«ä¹åArcï¼ä½å°èµ·ç¹åç»ç¹é½ä¸å¤æ¥ç©å½¢çä¸å¿ç¸è¿æ¥ï¼å½¢æä¸ä¸ªæå½¢åºåï¼ç¨DCä¸çå·å¡«å
æ´ä¸ªæå½¢åºåï¼æ å¦å¤ç边线ï¼
BOOL Pie( int x1, int y1, int x2, int y2, int x3, int y3, intx4, int y4 );
BOOL Pie( LPCRECT lpRect, POINT ptStart, POINT ptEnd );
ç»æå¨çç©å½¢ï¼å
æ¦é¤çº¿å®½ä¸ºsizeLastãå¡«å
å·ä¸ºpBrushLastçåç©å½¢lpRectLastï¼ç¶åå以线宽为sizeãå¡«å
å·ä¸ºpBrushç»æ°ç©å½¢lpRectLastãç©å½¢çè¾¹æ¡ç¨ç°è²çç¹è线ç»ï¼ç¼ºççå¡«å
å·ä¸ºç©ºå·ï¼
void DrawDragRect( LPCRECT lpRect, SIZE size, LPCRECTlpRectLast,
SIZE sizeLast, CBrush* pBrush = NULL, CBrush* pBrushLast = NULL);
å¦ï¼pDC->DrawDragRect(rect, size, rect0, size);
å¡«å
åºåï¼
ç¨å½åå·ä»ç¹(x, y)å¼å§ååå¨å¡«å
å°é¢è²ä¸ºcrColorçè¾¹çï¼
BOOL FloodFill(int x, int y, COLORREF crColor); // æåè¿åé0
ç¨å½åå·ä»ç¹(x, y)å¼å§ååå¨å¡«å
ï¼
BOOL ExtFloodFill(int x, int y, COLORREF crColor,
UINT nFillType); // æåè¿åé0
nFillType =FLOODFILLBORDERï¼å¡«å
å°é¢è²ä¸ºcrColorçè¾¹çï¼åFloodFillï¼ï¼ï¼ç¨äºå¡«å
å
é¨é¢è²ä¸åä½è¾¹çé¢è²ç¸åçåºåï¼
nFillType =FLOODFILLSURFACEï¼å¡«å
ææé¢è²ä¸ºcrColorçç¹ï¼ç´å°ç¢°å°écrColoré¢è²çç¹ä¸ºæ¢ãï¼ç¹(x,y)çé¢è²ä¹å¿
须为crColorï¼ï¼ï¼ç¨äºå¡«å
å
é¨é¢è²ç¸åä½è¾¹çé¢è²å¯ä»¥ä¸åçåºåï¼ãä¾å¦ï¼
pDC->ExtFloodFill(point.x, point.y,pDC-> GetPixel_r(point), FLOODFILLSURFACE);
4ï¼æ¸
å±
Windows没ææä¾ä¸é¨çæ¸
å±å½æ°ï¼å¯ä»¥è°ç¨CWndçä¸é¢ä¸¤ä¸ªå½æ°è°ç¨æ¥å®æ该åè½ï¼
void Invalidate(BOOL bErase = TRUE);
void UpdateWindow( );
æè°ç¨CWndçå½æ°
BOOL RedrawWindow(
LPCRECT lpRectUpdate =NULL,
CRgn* prgnUpdate =NULL,
UINT flags = RDW_INVALIDATE |RDW_UPDATENOW | RDW_ERASE
);
æ¥å®æã
ä¾å¦ï¼èå项ID_CLEARçäºä»¶å¤çå½æ°ï¼ï¼
CDrawView::OnClear() { // è°ç¨OnDrawæ¥æ¸
å±
//Invalidate();
//UpdateWindow( );
RedrawWindow( );
}
ä¹å¯ä»¥ç¨ç»å¡«å
èæ¯è²ç©å½¢çæ¹æ³æ¥æ¸
å±ï¼å¦ï¼
RECT rect;
GetClientRect_r(&rect);
pDC->FillSolidRect(&rect, RGB(255,255, 255));
温馨提示:答案为网友推荐,仅供参考