int DrawGr(HDC hdc) { HPEN hPen, hOldPen; HBRUSH hBrush, hOldBrush; hPen = CreatePen(PS_SOLID, 1, RGB(255, 0, 0)); hOldPen = SelectObject(hdc, hPen); hBrush = CreateHatchBrush(HS_CROSS, RGB(0, 255, 0)); hOldBrush = SelectObject(hdc, hBrush); Rectangle(hdc, 10, 10, 200, 100); SelectObject(hdc, hOldPen); SelectObject(hdc, hOldBrush); DeleteObject(hPen); DeleteObject(hBrush); hPen = CreatePen(PS_DASH, 1, RGB(255, 100, 10)); hOldPen = SelectObject(hdc, hPen); hBrush = CreateHatchBrush(HS_BDIAGONAL, RGB(0, 0, 255)); hOldBrush = SelectObject(hdc, hBrush); Rectangle(hdc, 40, 40, 240, 140); SelectObject(hdc, hOldPen); SelectObject(hdc, hOldBrush); DeleteObject(hPen); DeleteObject(hBrush); hPen = CreatePen(PS_DOT, 1, RGB(100, 100, 100)); hOldPen = SelectObject(hdc, hPen); SelectObject(hdc, GetStockObject(NULL_BRUSH)); Rectangle(hdc, 70, 70, 270, 270); SelectObject(hdc, hOldPen); DeleteObject(hPen); DrawRect4(hdc); /* Call compiled function */ return 0; }
void Paint(HWND hWnd){ hDC = BeginPaint(hWnd, &Ps); HPEN hPenOld; HPEN hLinePen; COLORREF qLineColor; qLineColor = RGB(255, 0, 0); hLinePen = CreatePen(PS_SOLID, 8, qLineColor); hPenOld = (HPEN)SelectObject(hDC, hLinePen); MoveToEx(hDC, 150, 0, NULL); LineTo(hDC, 150, 950); MoveToEx(hDC, 150, 775, NULL); LineTo(hDC, 1600, 775); HBRUSH brCross = CreateHatchBrush(HS_CROSS, RGB(0, 128, 245)); SelectObject(hDC, brCross); RoundRect(hDC, 150, 775, 1580, 850, 10, 10); SetTextColor(hDC, RGB(0, 0, 255)); TextOut(hDC, 10, 760, "Powered by:", 12); TextOut(hDC, 30, 782, "IUSTIN PIRVU", 12); qLineColor = RGB(0, 0, 255); hLinePen = CreatePen(PS_SOLID, 4, qLineColor); hPenOld = (HPEN)SelectObject(hDC, hLinePen); HBRUSH brDiagCross = CreateHatchBrush(HS_DIAGCROSS, RGB(0, 128, 0)); SelectObject(hDC, brDiagCross); RoundRect(hDC, 175, 25, 1565, 750, 10, 10); NewBrush = CreateSolidBrush(RGB(255, 2, 5)); SelectObject(hDC, NewBrush); Rectangle(hDC, 5, 440, 145, 515); }
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { int id; HDC hdc; PAINTSTRUCT ps; HPEN hPen, hOldPen; HBRUSH hBrush, hOldBrush; switch (msg) { case WM_PAINT: hdc = BeginPaint(hWnd, &ps); hPen = CreatePen(PS_SOLID, 0, RGB(255, 0, 0)); hOldPen = (HPEN)SelectObject(hdc, hPen); hBrush = CreateSolidBrush(RGB(0, 255, 0)); hOldBrush = (HBRUSH)SelectObject(hdc, hBrush); Rectangle(hdc, 10, 10, 100, 100); DeleteObject(hBrush); hBrush = CreateHatchBrush(HS_BDIAGONAL, RGB(255, 0, 0)); SelectObject(hdc, hBrush); Rectangle(hdc, 50, 50, 150, 150); DeleteObject(hBrush); hBrush = CreateHatchBrush(HS_FDIAGONAL, RGB(0, 0, 255)); SelectObject(hdc, hBrush); Rectangle(hdc, 100, 100, 200, 200); DeleteObject(hBrush); hBrush = CreateHatchBrush(HS_CROSS, RGB(255, 0, 255)); SelectObject(hdc,hBrush); Rectangle(hdc, 150, 150, 250, 250); DeleteObject(hBrush); hBrush = CreateHatchBrush(HS_DIAGCROSS, RGB(255, 255, 0)); SelectObject(hdc, hBrush); Rectangle(hdc, 200, 200, 300, 300); DeleteObject(hBrush); hBrush = (HBRUSH)GetStockObject(NULL_BRUSH); SelectObject(hdc, hBrush); Rectangle(hdc, 250, 250, 350, 350); DeleteObject(hPen); SelectObject(hdc, hOldPen); SelectObject(hdc, hOldBrush); EndPaint(hWnd, &ps); break; case WM_CLOSE: id = MessageBox(hWnd, TEXT("終了してもよろしいですか"), TEXT("確認"), MB_YESNO | MB_ICONQUESTION); if (id == IDYES) DestroyWindow(hWnd); break; case WM_DESTROY: PostQuitMessage(0); break; default: return (DefWindowProc(hWnd, msg, wp, lp)); } return 0; }
void PaintRoutine (HWND hwnd, HDC hdc, int cxArea, int cyArea) { static TCHAR szString [] = TEXT ("Filling") ; HFONT hFont ; SIZE size ; hFont = EzCreateFont (hdc, TEXT ("Times New Roman"), 1440, 0, 0, TRUE) ; SelectObject (hdc, hFont) ; SetBkMode (hdc, TRANSPARENT) ; GetTextExtentPoint32 (hdc, szString, lstrlen (szString), &size) ; BeginPath (hdc) ; TextOut (hdc, (cxArea - size.cx) / 2, (cyArea - size.cy) / 2, szString, lstrlen (szString)) ; EndPath (hdc) ; SelectObject (hdc, CreateHatchBrush (HS_DIAGCROSS, RGB (255, 0, 0))) ; SetBkColor (hdc, RGB (0, 0, 255)) ; SetBkMode (hdc, OPAQUE) ; StrokeAndFillPath (hdc) ; DeleteObject (SelectObject (hdc, GetStockObject (WHITE_BRUSH))) ; SelectObject (hdc, GetStockObject (SYSTEM_FONT)) ; DeleteObject (hFont) ; }
void CPipProp::Sizer::Draw(HDC hdc) { HBRUSH hBrush=0; COLORREF color = RGB(0, 0, 0xFF); if (m_bSelected) { hBrush = CreateHatchBrush(HS_DIAGCROSS, color); } else { hBrush = CreateSolidBrush(color); } if (!hBrush) return; FrameRect(hdc, this, hBrush); if (m_bSelected) // Draw the anchors { for (int i = 0; i < 4; i++) { FillRect(hdc, &m_Anchor[i], (HBRUSH)GetStockObject(BLACK_BRUSH)); } } FrameRect(hdc, &m_BoundingRect, (HBRUSH)GetStockObject(BLACK_BRUSH)); DeleteObject(hBrush); }
void CMFC_DemoView::OnDraw(CDC* pDC) { CMFC_DemoDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: 在此处为本机数据添加绘制代码 CClientDC hdc(this); SetMapMode(hdc, MM_ANISOTROPIC); //设置映像模式 HPEN hP = (HPEN)GetStockObject(BLACK_PEN); //黑色画笔 HBRUSH hB = (HBRUSH)GetStockObject(DKGRAY_BRUSH); //画刷 SelectObject(hdc, hB); //选择画刷 SelectObject(hdc, hP); //选择画笔 RoundRect(hdc, 50, 120, 100, 200, 15, 15); //绘制圆角矩形 hB = (HBRUSH)GetStockObject(LTGRAY_BRUSH); //采用亮灰色画刷 SelectObject(hdc, hB); //选择画刷 Ellipse(hdc, 150, 50, 200, 150); //绘制椭圆 hB = (HBRUSH)GetStockObject(HOLLOW_BRUSH); //虚画刷 SelectObject(hdc, hB); //选择画刷 Pie(hdc, 250, 50, 300, 100, 250, 50, 300, 50); //绘制饼形 hP = CreatePen(PS_DASHDOT, 1, RGB(0, 0, 255)); hB = CreateHatchBrush(HS_HORIZONTAL, RGB(0, 255, 0)); SelectObject(hdc, hP); SelectObject(hdc, hB); RoundRect(hdc, 35, 220, 115, 270, 15, 15); Ellipse(hdc, 125, 170, 225, 220); Pie(hdc, 250, 120, 300, 170, 300, 120, 300, 170); }
BOOL CMovableObj::Draw(HDC hDC, LPRECT pRect) {_STT(); RECT rect, intersection; CopyRect( &rect, &m_rect ); OffsetRect( &rect, -m_lXOff, -m_lYOff ); // Punt if off the canvas if ( !IntersectRect( &intersection, pRect, &rect ) ) return FALSE; // Draw the object OnDraw( hDC, &rect ); if ( m_bSelected ) { // Draw the rect frame HBRUSH hBrush = CreateHatchBrush( HS_BDIAGONAL, RGB( 0, 0, 0 ) ); FrameRect( hDC, &rect, hBrush ); DeleteObject( hBrush ); // Draw a focus rect DrawFocusRect( hDC, &rect ); } // end if return TRUE; }
static void test_hatch_brush(void) { int i, size; HBRUSH brush; LOGBRUSH lb; for (i = 0; i < 20; i++) { SetLastError( 0xdeadbeef ); brush = CreateHatchBrush( i, RGB(12,34,56) ); if (i < HS_API_MAX) { ok( brush != 0, "%u: CreateHatchBrush failed err %u\n", i, GetLastError() ); size = GetObject( brush, sizeof(lb), &lb ); ok( size == sizeof(lb), "wrong size %u\n", size ); ok( lb.lbColor == RGB(12,34,56), "wrong color %08x\n", lb.lbColor ); if (i <= HS_DIAGCROSS) { ok( lb.lbStyle == BS_HATCHED, "wrong style %u\n", lb.lbStyle ); ok( lb.lbHatch == i, "wrong hatch %lu/%u\n", lb.lbHatch, i ); } else { ok( lb.lbStyle == BS_SOLID, "wrong style %u\n", lb.lbStyle ); ok( lb.lbHatch == 0, "wrong hatch %lu\n", lb.lbHatch ); } DeleteObject( brush ); } else { ok( !brush, "%u: CreateHatchBrush succeeded\n", i ); ok( GetLastError() == 0xdeadbeef, "wrong error %u\n", GetLastError() ); } } }
void WinPaint::paint(HDC hdc){ HPEN hP; //¶¨Ò廱ʾä±ú HBRUSH hB; //¶¨Òå»Ë¢¾ä±ú SetMapMode(hdc,MM_TEXT); hB=CreateSolidBrush(RGB(255,255,255)); SelectObject(hdc,hB); Rectangle(hdc,0,0,2000,2000); hP=CreatePen(PS_SOLID,1,RGB(255,0,0)); SelectObject(hdc,hP); DeleteObject(hB); DeleteObject(hP); for(unsigned i = 0; i < roles.size(); i++){ hB=CreateSolidBrush(RGB(i*37 % 255,i*111 % 255,i*153 % 255)); SelectObject(hdc,hB); RECT rect = getRect(roles[i]->getAABB()); Rectangle(hdc,rect.left,rect.top,rect.right,rect.bottom); DeleteObject(hB); } hP=CreatePen(PS_SOLID,1,RGB(0,0,255)); hB=CreateHatchBrush(HS_CROSS,RGB(0,255,0));//ÂÌÉ«Íø×´ SelectObject(hdc,hP); SelectObject(hdc,hB); //¸üлˢ£¬Óá°ÂÌÉ«Íø×´¡± for(unsigned i = 0; i < houses.size(); i++){ RECT rect = getRect(houses[i]->getAABB()); Rectangle(hdc,rect.left,rect.top,rect.right,rect.bottom); } DeleteObject(hB); DeleteObject(hP); }
void PANEL_InitGDIResources(HINSTANCE hModule) { if (Panel_Resources_Loaded) return; hPEN_White=CreatePen(PS_SOLID,1,RGB(250,250,250)); hPEN_Gray=CreatePen(PS_SOLID,1,RGB(100,100,100)); hPEN_Black=CreatePen(PS_SOLID,1,RGB(15,15,15)); hPEN_NULL=CreatePen(PS_NULL,1,RGB(0,0,0)); hPEN_Cyan=CreatePen(PS_SOLID,1,RGB(255,100,100)); hPEN_BYellow=CreatePen(PS_SOLID,1,RGB(0,250,0)); // hPEN_LGray=CreatePen(PS_SOLID,1,RGB(180,180,160)); hPEN_LGray=CreatePen(PS_SOLID,1,RGB(145,49,49)); hBRUSH_Brown=CreateSolidBrush(RGB(10,10,10)); hBRUSH_Sky=CreateSolidBrush(RGB(230,230,230)); hBRUSH_Yellow=CreateSolidBrush(RGB(16,8,8)); hBRUSH_BYellow=CreateSolidBrush(RGB(105,100,45)); hBRUSH_Black=CreateSolidBrush(RGB(15,15,15)); hBRUSH_TotalBlack=CreateSolidBrush(RGB(0,0,0)); hBRUSH_FYellow=CreateSolidBrush(RGB(0,50,0)); hBRUSH_Red=CreateSolidBrush(RGB(49,74,41)); hBRUSH_Green=CreateSolidBrush(RGB(0,255,0)); hBRUSH_White=CreateSolidBrush(RGB(255,255,255)); hBRUSH_StrpWht=CreateHatchBrush(HS_BDIAGONAL,RGB(250,250,250)); hBRUSH_Background=CreateSolidBrush(RGB(145,48,48)); hBRUSH_LBkg=CreateSolidBrush(RGB(40,54,59)); //hBRUSH_Gray=CreateSolidBrush(RGB(180,180,160)); hBRUSH_Gray=CreateSolidBrush(RGB(145,49,49)); hFNT_Panel=CreateFont(12,0,0,0,FW_NORMAL,0,0,0,ANSI_CHARSET,OUT_RASTER_PRECIS, CLIP_DEFAULT_PRECIS,PROOF_QUALITY,DEFAULT_PITCH,"Arial"); hBITMAP_ADI=LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP1)); hClockSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP1))); hSwitchSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP2))); hHgaugeSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP3))); hEgaugeSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP4))); hRotarySRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP5))); hTbSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP6))); hCbSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP7))); hSliderSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP8))); hCwSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP9))); hMFDSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP10))); hDockBSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP14))); hDockSW1SRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP16))); hDockDlSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP17))); hDockSW2SRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP18))); hNavSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP19))); hRadarSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP20))); hRadBkSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP21))); hRadSrfSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP22))); hFuelSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP23))); hVrotSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP26))); hVrotBkSRF=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP27))); hADIBorder=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP28))); hFront_Panel_SRF[1]=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP11))); hFront_Panel_SRF[2]=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP12))); hFront_Panel_SRF[3]=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP13))); hFront_Panel_SRF[4]=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP15))); hFront_Panel_SRF[5]=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP24))); hFront_Panel_SRF[6]=oapiCreateSurface (LoadBitmap(hModule,MAKEINTRESOURCE(IDB_BITMAP25))); Panel_Resources_Loaded=1; }
static HBRUSH create_brush(void) { int j = get_rand(0, num_hatches); if (j==0) return CreateSolidBrush(colors[get_rand(0, num_colors)]); else return CreateHatchBrush(j-1, colors[get_rand(0, num_colors)]); }
void CGame::PaintFlaggedSquare(HDC hdc, RECT& rect, CSquare& square) { HBRUSH brush=CreateHatchBrush(HS_DIAGCROSS, RGB(255,0,0)); HGDIOBJ brushOld ; brushOld=SelectObject(hdc,brush); Rectangle(hdc,rect.left, rect.top, rect.right, rect.bottom); SelectObject(hdc,brushOld); DeleteObject(brush); }
void CGame::PaintMineSquare(HDC hdc, RECT& rect, CSquare& square) { HBRUSH brush=CreateHatchBrush(square.WasGameOver ? HS_BDIAGONAL : HS_DIAGCROSS, RGB(127,51,0)); HGDIOBJ brushOld ; brushOld=SelectObject(hdc,brush); Rectangle(hdc,rect.left, rect.top, rect.right, rect.bottom); SelectObject(hdc,brushOld); DeleteObject(brush); }
void Test_MaskBlt_Brush() { HDC hdcDst, hdcSrc; struct { BITMAPINFOHEADER bmiHeader; ULONG aulColors[2]; } bmiData = {{sizeof(BITMAPINFOHEADER), 16, 16, 1, 1, BI_RGB, 0, 10, 10, 2,0}, {0, 0xFFFFFF}}; PBITMAPINFO pbmi = (PBITMAPINFO)&bmiData; HBITMAP hbmDst, hbmSrc, hbmMsk; PULONG pulBitsDst, pulBitsSrc, pulBitsMsk; BOOL ret; HBRUSH hbr; /* Create a dest dc and bitmap */ hdcDst = CreateCompatibleDC(NULL); hbmDst = CreateDIBSection(hdcDst, pbmi, DIB_RGB_COLORS, (PVOID*)&pulBitsDst, NULL, 0); SelectObject(hdcDst, hbmDst); /* Create a source dc and bitmap */ hdcSrc = CreateCompatibleDC(NULL); hbmSrc = CreateDIBSection(hdcSrc, pbmi, DIB_RGB_COLORS, (PVOID*)&pulBitsSrc, NULL, 0); SelectObject(hdcSrc, hbmSrc); hbr = CreateHatchBrush(HS_CROSS, 0); ok(hbr != 0, "failed to create brush\n"); ok(SelectObject(hdcDst, hbr) != 0, "failed to select brush\n"); /* Do the masking (SRCCOPY / NOOP) */ pulBitsDst[0] = 0x00000000; pulBitsSrc[0] = 0xFFFFFFFF; ret = MaskBlt(hdcDst, 0, 0, 8, 1, hdcSrc, 0, 0, NULL, 0, 0, MAKEROP4(SRCCOPY, 0xAA0000)); ok(ret == 1, "MaskBlt failed (%d)\n", ret); ok(pulBitsDst[0] == 0, "pulBitsDst[0] == 0x%lx\n", pulBitsDst[0]); /* Create a 1 bpp pattern brush */ pbmi->bmiHeader.biWidth = 8; hbmMsk = CreateDIBSection(hdcDst, pbmi, DIB_RGB_COLORS, (PVOID*)&pulBitsMsk, NULL, 0); ok(hbmMsk != 0, "CreateDIBSection failed\n"); hbr = CreatePatternBrush(hbmMsk); ok(hbr != 0, "CreatePatternBrush failed\n"); ok(SelectObject(hdcDst, hbr) != 0, "failed to select brush\n"); /* Do the masking (SRCCOPY / NOOP) */ pulBitsDst[0] = 0x00000000; pulBitsSrc[0] = 0xFFFFFFFF; pulBitsMsk[0] = 0xCCAAFF00; ret = MaskBlt(hdcDst, 0, 0, 16, 1, hdcSrc, 0, 0, NULL, 0, 0, MAKEROP4(SRCCOPY, 0xAA0000)); ok(ret == 1, "MaskBlt failed (%d)\n", ret); ok(pulBitsDst[0] == 0, "pulBitsDst[0] == 0x%lx\n", pulBitsDst[0]); }
void updateBrush() { if (g_brush)DeleteObject(g_brush); if (g_brushColor == EMPTY) { g_brush = (HBRUSH) GetStockObject(NULL_BRUSH); } else { if (g_brushStyle == BRUSH_STYLE_SOLID) g_brush = CreateSolidBrush(g_brushColor); else g_brush = CreateHatchBrush(g_brushStyle, g_brushColor); } SelectObject(g_hmemdc, g_brush); }
int WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR CmdArgs, int CmdShow ) { HWND wnd; WNDCLASSEX wc; MSG msg; HBRUSH backbrush; backbrush = CreateHatchBrush( HS_CROSS, 0x654321); wc.cbSize = sizeof( WNDCLASSEX ); wc.hIcon = LoadIcon( NULL, IDI_APPLICATION ); wc.hCursor = LoadCursor( hInst, "MyIcon" ); wc.hbrBackground = backbrush; wc.hInstance = hInst; wc.lpszClassName = "JugglerClass"; wc.lpszMenuName = NULL; wc.cbClsExtra = wc.cbWndExtra = 0; wc.lpfnWndProc = (WNDPROC)WndProc; wc.hIconSm = NULL; wc.style = 0; if( !RegisterClassEx( &wc ) ) { MessageBox( NULL, "Could not Register Window Class", "Error", MB_OK ); return 0; } wnd = CreateWindowEx( 0, "JugglerClass", "Juggler", WS_CAPTION | WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, WIDTH + GetSystemMetrics( SM_CXBORDER ) * 2, HEIGHT + GetSystemMetrics( SM_CYCAPTION ) + GetSystemMetrics( SM_CYBORDER), NULL, NULL, hInst, NULL ); if( wnd == NULL ) { MessageBox( NULL, "Could not create window", "Error", MB_OK ); UnregisterClass( "JugglerClass", hInst ); return 0; } ShowWindow( wnd, SW_SHOW ); UpdateWindow( wnd ); while( GetMessage( &msg, wnd, 0, 0 ) > 0 ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } UnregisterClass( "JugglerClass", hInst ); DeleteObject( backbrush ); return 0; }
void ZLWin32PaintContext::setFillColor(ZLColor color, FillStyle style) { if (myDisplayContext == 0) { return; } // TODO: optimize (don't create new brush, if color and style are not changed) if (myFillBrush != 0) { DeleteObject(myFillBrush); } COLORREF colorref = RGB(color.Red, color.Green, color.Blue); myFillBrush = (style == SOLID_FILL) ? CreateSolidBrush(colorref) : CreateHatchBrush(HS_DIAGCROSS, colorref); }
void DrawRect4(HDC hdc) { HPEN hPen, hOldPen; HBRUSH hBrush, hOldBrush; hPen = CreatePen(PS_DASHDOTDOT, 1, RGB(0, 255, 0)); hOldPen = SelectObject(hdc, hPen); hBrush = CreateHatchBrush(HS_DIAGCROSS, RGB(255, 0, 255)); hOldBrush = SelectObject(hdc, hBrush); Rectangle(hdc, 100, 100, 200, 160); SelectObject(hdc, hOldPen); SelectObject(hdc, hOldBrush); DeleteObject(hPen); DeleteObject(hBrush); }
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR cmd, int nCmdShow ) { WNDCLASSEX wc; HWND window; MSG message; static LPCSTR szAppName = { "Color Lines XP " }; wc.cbSize = sizeof( WNDCLASSEX ); wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hbrBackground = CreateHatchBrush( HS_DIAGCROSS, RGB( 12, 150, 255 ) ); wc.hCursor = LoadCursor( 0, IDC_ARROW ); wc.hIcon = LoadIcon( 0, IDI_APPLICATION ); wc.hIconSm = LoadIcon( 0, IDI_APPLICATION ); wc.hInstance = hInstance; wc.lpfnWndProc = WndProc; wc.lpszClassName = szAppName; wc.lpszMenuName = 0; wc.style = CS_HREDRAW | CS_VREDRAW; RegisterClassEx( &wc ); window = CreateWindow( szAppName, "Color Lines XP", WS_OVERLAPPEDWINDOW, 0, 0, ( NUMSQUARES + 2 ) * ( SQUARE_SIZE + 2 ) , ( NUMSQUARES + 2 ) * ( SQUARE_SIZE + 2 ), 0, 0, hInstance, 0 ); ShowWindow( window, nCmdShow ); while( GetMessage( &message, 0, 0, 0 ) ) { TranslateMessage( &message ); DispatchMessage( &message ); } return message.wParam; }
void CreateDrawElements(PGPContextRef context,DRAWSTRUCT *ds) { LOGFONT lf; ds->DisplayMarginal=FALSE; ds->stdbarbrush = CreateSolidBrush (GetSysColor (COLOR_3DSHADOW)); ds->spcbarbrush = CreateHatchBrush(HS_BDIAGONAL, GetSysColor (COLOR_WINDOW)); ds->g_seltextpen = CreatePen (PS_SOLID, 0, GetSysColor (COLOR_WINDOWTEXT)); ds->g_unseltextpen = CreatePen (PS_SOLID, 0, GetSysColor (COLOR_WINDOW)); ds->barcolor = GetSysColor (COLOR_3DSHADOW); ds->buttonpen = CreatePen(PS_SOLID, 0, GetSysColor (COLOR_3DSHADOW)); ds->hilightpen = CreatePen (PS_SOLID, 0, GetSysColor (COLOR_3DHILIGHT)); ds->shadowpen = CreatePen (PS_SOLID, 0, GetSysColor (COLOR_3DDKSHADOW)); ds->barbgbrush = CreateSolidBrush (GetSysColor (COLOR_3DFACE)); ds->HighBrush=CreateSolidBrush(GetSysColor(COLOR_HIGHLIGHT)); ds->BackBrush=CreateSolidBrush(GetSysColor(COLOR_WINDOW)); SystemParametersInfo (SPI_GETICONTITLELOGFONT, sizeof(LOGFONT), &lf, 0); ds->hFont=CreateFontIndirect (&lf); lf.lfItalic = !lf.lfItalic; ds->hItalic=CreateFontIndirect (&lf); lf.lfItalic = !lf.lfItalic; lf.lfStrikeOut=TRUE; ds->hStrikeOut = CreateFontIndirect (&lf); // ImageList Init PGPsdkUICreateImageList(&(ds->hIml)); }
void CGame::PaintNumberSquare(HDC hdc, RECT& rect, CSquare& square) { HBRUSH brush=CreateHatchBrush(HS_DIAGCROSS, RGB(127.5,0,255)); HGDIOBJ brushOld ; brushOld=SelectObject(hdc,brush); Rectangle(hdc,rect.left, rect.top, rect.right, rect.bottom); SelectObject(hdc,brushOld); DeleteObject(brush); LPCTSTR pszCount=NULL; switch (square.AdjacentMineCount) { case 1: pszCount=_T("1"); break; case 2: pszCount=_T("2"); break; case 3: pszCount=_T("3"); break; case 4: pszCount=_T("4"); break; case 5: pszCount=_T("5"); break; case 6: pszCount=_T("6"); break; case 7: pszCount=_T("7"); break; case 8: pszCount=_T("8"); break; default: break; } if(pszCount!=NULL) TextOut(hdc, rect.left+8,rect.top+4,pszCount,1); }
// // FUNCTION: InitInstance(HINSTANCE, int) // // PURPOSE: Saves instance handle and creates main window // // COMMENTS: // // In this function, we save the instance handle in a global variable and // create and display the main program window. // BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { hInst = hInstance; // Store instance handle in our global variable hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); if (!hWnd) { return FALSE; } DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS; brush = CreateHatchBrush(HS_BDIAGONAL, RGB(0, 0x80, 0xFF)); ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE; }
BOOL CFigure::Draw(static HDC hdc, static float Scale) { BOOL tmp = true; wchar_t buffer[64]; HPEN hp = CreatePen(borderStyle, 0, borderColor); HBRUSH hbr = CreateHatchBrush(backgroundStyle, backgroundColor); SelectObject(hdc, hp); if (backgroundStyle == -1) { SetDCBrushColor(hdc, backgroundColor); SelectObject(hdc, GetStockObject(DC_BRUSH)); } else SelectObject(hdc, hbr); if (strcmp(type, "line") == 0) { tmp = MoveToEx(hdc, start.GetX() * Scale, start.GetY() * Scale, NULL); if (!tmp) return tmp; tmp = LineTo(hdc, end.GetX() * Scale, end.GetY() * Scale); } else if (strcmp(type, "rectangle") == 0) { tmp = Rectangle(hdc, start.GetX() * Scale, start.GetY() * Scale, end.GetX() * Scale, end.GetY() * Scale); } else if (strcmp(type, "rectangle_rounded") == 0) { tmp = RoundRect(hdc, start.GetX() * Scale, start.GetY()* Scale, end.GetX() * Scale, end.GetY() * Scale, 10, 10); } else if (strcmp(type, "ellipse") == 0) { tmp = Ellipse(hdc, start.GetX() * Scale, start.GetY()* Scale, end.GetX() * Scale, end.GetY() * Scale); } DeleteObject(hp); DeleteObject(hbr); return tmp; }
void vTestKerning( HWND hwnd, HDC hdc, RECT *prect ) { FTPARAM ftp; HBRUSH hbOld; char ach[100]; char *psz1 = "*** GetKerningPairs Test ***"; char *psz2 = "*** GetKerningPairs Test is Finished ***"; HBRUSH hbrushKern; hbrushKern = CreateHatchBrush(HS_CROSS,RGB(0xC0,0xC0,0xC0)); hbOld = SelectObject(hdc,hbrushKern); PatBlt( hdc, prect->left, prect->top, prect->right - prect->left, prect->bottom - prect->top, PATCOPY ); SelectObject(hdc,hbOld); DeleteObject(hbrushKern); ftp.hwnd = hwnd; ftp.hdc = hdc; ftp.prect = prect; TextOut(hdc,0,0,psz1,strlen(psz1)); EnumFonts(hdc,(LPCSTR) NULL,FontFunc,(LPARAM) &ftp); TextOut(hdc,0,0,psz2,strlen(psz2)); }
//-------------------------------------【 Game_Init() 函数 】------------------------------------------------------------- // 描述:初始化函数,进行一些简单的初始化 //------------------------------------------------------------------------------------------------------------------------ BOOL Game_Init(HWND hwnd) { g_hdc = GetDC(hwnd); srand((unsigned)time(NULL)); //随机初始化画笔和画刷的颜色值 for (int i = 1; i <= 6; i++) { g_hpen[i] = CreatePen(g_iPenStyle[i], 1, RGB(rand() % 256, rand() % 256, rand() % 256)); if (i == 6) { g_hbrush[i] = CreateSolidBrush(RGB(rand() % 256, rand() % 256, rand() % 256)); } else { g_hbrush[i] = CreateHatchBrush(g_iBrushStyle[i], RGB(rand() % 256, rand() % 256, rand() % 256)); } } Game_Paint(hwnd); ReleaseDC(hwnd, g_hdc); return true; }
//--------------------------------------------------------------------------- void __fastcall TShadeSelect::DrawItem(int Index, const TRect &Rect, TOwnerDrawState State) { //There seems to be a bug in TBrush, so CreateHatchBrush and CreateSolidBrush //are used directly to get a handle switch(Index) { case 0: Canvas->Brush->Handle = CreateSolidBrush(Color); break; case 1: Canvas->Brush->Handle = CreateHatchBrush(HS_HORIZONTAL, Color); break; case 2: Canvas->Brush->Handle = CreateHatchBrush(HS_VERTICAL, Color); break; case 3: Canvas->Brush->Handle = CreateHatchBrush(HS_FDIAGONAL, Color); break; case 4: Canvas->Brush->Handle = CreateHatchBrush(HS_BDIAGONAL, Color); break; case 5: Canvas->Brush->Handle = CreateHatchBrush(HS_CROSS, Color); break; case 6: Canvas->Brush->Handle = CreateHatchBrush(HS_DIAGCROSS, Color); break; } unsigned OldColor = GetBkColor(Canvas->Handle); SetBkColor(Canvas->Handle, clWhite); Canvas->FillRect(Rect); SetBkColor(Canvas->Handle, OldColor); }
/* Window message handle function */ LRESULT CALLBACK MyWindowFunc( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ) { HDC hDC; PAINTSTRUCT ps; DOUBLE a, r; CHAR s[300]; SYSTEMTIME t; HPEN hPen, hOldPen; HBRUSH hBr, hOldBr; CREATESTRUCT *cs; MINMAXINFO *MinMax; static POINT pts[] = { {0, 0}, {30, 300}, {200, 20} }; static HFONT hFnt; static INT w, h; static BITMAP bm, bmPig; static HBITMAP hFrame, hFace, hPigXOR, hPigAND; static HDC hMemDCFrame, hMemDCFace, hMemDCPig; switch (Msg) { case WM_GETMINMAXINFO: MinMax = (MINMAXINFO *)lParam; MinMax->ptMaxTrackSize.y = GetSystemMetrics(SM_CYMAXTRACK) + GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYMENU) + GetSystemMetrics(SM_CYBORDER) * 2; return 0; case WM_CREATE: cs = (CREATESTRUCT *)lParam; SetTimer(hWnd, 11, 2, NULL); hFace = LoadBitmap(cs->hInstance, (CHAR *)IDB_CLOCKFACE); GetObject(hFace, sizeof(bm), &bm); hPigXOR = LoadImage(cs->hInstance, (CHAR *)IDB_XOR, IMAGE_BITMAP, 0, 0, 0); GetObject(hPigXOR, sizeof(bmPig), &bmPig); hPigAND = LoadImage(cs->hInstance, (CHAR *)IDB_AND, IMAGE_BITMAP, 0, 0, 0); hDC = GetDC(hWnd); hMemDCFace = CreateCompatibleDC(hDC); hMemDCFrame = CreateCompatibleDC(hDC); hMemDCPig = CreateCompatibleDC(hDC); ReleaseDC(hWnd, hDC); SelectObject(hMemDCFace, hFace); hFnt = CreateFont(59, 0, 0, 9000, FW_BOLD, FALSE, FALSE, FALSE, RUSSIAN_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, VARIABLE_PITCH | FF_SCRIPT, "Bookman Old Style"); SelectObject(hMemDCFrame, hFnt); return 0; case WM_SIZE: w = LOWORD(lParam); h = HIWORD(lParam); if (hFrame != NULL) DeleteObject(hFrame); hDC = GetDC(hWnd); hFrame = CreateCompatibleBitmap(hDC, w, h); ReleaseDC(hWnd, hDC); SelectObject(hMemDCFrame, hFrame); SendMessage(hWnd, WM_TIMER, 0, 0); return 0; case WM_KEYDOWN: if (LOWORD(wParam) == 'F') FlipFullScreen(hWnd); else if (LOWORD(wParam) == VK_ESCAPE) DestroyWindow(hWnd); return 0; case WM_ERASEBKGND: return 0; case WM_TIMER: SelectObject(hMemDCFrame, GetStockObject(NULL_PEN)); Rectangle(hMemDCFrame, 0, 0, w + 1, h + 1); BitBlt(hMemDCFrame, (w - bm.bmWidth) / 2, (h - bm.bmHeight) / 2, bm.bmWidth, bm.bmHeight, hMemDCFace, 0, 0, SRCCOPY); GetLocalTime(&t); a = (t.wSecond) * 2 * 3.1415926535 / 60; r = bm.bmWidth / 2.2; hPen = CreatePen(PS_SOLID, 6, RGB(0xFF, 0, 0xFF)); hOldPen = SelectObject(hMemDCFrame, hPen); MoveToEx(hMemDCFrame, w / 2, h / 2, NULL); LineTo(hMemDCFrame, w / 2 + sin(a) * r, h / 2 - cos(a) * r); SelectObject(hMemDCFrame, hOldPen); DeleteObject(hPen); a = (t.wMinute + t.wSecond / 60.0) * 2 * 3.1415926535 / 60; r = bm.bmWidth / 3.2; hPen = CreatePen(PS_SOLID, 10, RGB(0, 0, 255)); hOldPen = SelectObject(hMemDCFrame, hPen); MoveToEx(hMemDCFrame, w / 2, h / 2, NULL); LineTo(hMemDCFrame, w / 2 + sin(a) * r, h / 2 - cos(a) * r); SelectObject(hMemDCFrame, hOldPen); DeleteObject(hPen); a = (t.wHour % 12 + t.wMinute / 60.0) * 2 * 3.1415926535 / 12; r = bm.bmWidth / 4.0; MoveToEx(hMemDCFrame, w / 2, h / 2, NULL); LineTo(hMemDCFrame, w / 2 + sin(a) * r, h / 2 - cos(a) * r); /* SetBkMode(hMemDCFrame, TRANSPARENT); */ SetTextColor(hMemDCFrame, RGB(130, 90, 30)); TextOut(hMemDCFrame, 0, h / 2 + h / 2 * sin(clock() / 2000.0), s, sprintf(s, "Current date: %02i.%02i.%i", t.wDay, t.wMonth, t.wYear)); /* VOID WINAPI GetLocalTime(lpSystemTime); */ SelectObject(hMemDCPig, hPigAND); BitBlt(hMemDCFrame, 200 + 150 * sin(clock() / 200.0), 100, bmPig.bmWidth, bmPig.bmHeight, hMemDCPig, 0, 0, SRCAND); SelectObject(hMemDCPig, hPigXOR); BitBlt(hMemDCFrame, 200 + 150 * sin(clock() / 200.0), 100, bmPig.bmWidth, bmPig.bmHeight, hMemDCPig, 0, 0, SRCINVERT); hBr = CreateHatchBrush(HS_DIAGCROSS, RGB(0, 0, 255)); SetBkMode(hMemDCFrame, TRANSPARENT); hOldBr = SelectObject(hMemDCFrame, hBr); Polygon(hMemDCFrame, pts, 3); SelectObject(hMemDCFrame, hOldBr); DeleteObject(hBr); a = clock() / (DOUBLE)CLOCKS_PER_SEC; Draw(hMemDCFrame, 100, 100, 30 * sin(a * 5)); Draw(hMemDCFrame, 100, 100, 59 * sin(-a * 8)); Draw(hMemDCFrame, 100, 100, 36 * a); Draw(hMemDCFrame, 100, 100, -36 * a); InvalidateRect(hWnd, NULL, FALSE); return 0; case WM_PAINT: hDC = BeginPaint(hWnd, &ps); BitBlt(hDC, 0, 0, w, h, hMemDCFrame, 0, 0, SRCCOPY); EndPaint(hWnd, &ps); return 0; case WM_DESTROY: KillTimer(hWnd, 11); DeleteDC(hMemDCFrame); DeleteDC(hMemDCFace); DeleteObject(hFrame); DeleteObject(hFace); DeleteObject(hFnt); PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, Msg, wParam, lParam); } /* End of 'MyWindowFunc' function */
static LRESULT CALLBACK ColourPickerWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_CREATE: SetWindowLongPtr(hwnd, 0, 0); SetWindowLongPtr(hwnd, sizeof(COLORREF), 0); break; case CPM_SETDEFAULTCOLOUR: SetWindowLongPtr(hwnd, sizeof(COLORREF), lParam); break; case CPM_GETDEFAULTCOLOUR: return GetWindowLongPtr(hwnd, sizeof(COLORREF)); case CPM_SETCOLOUR: SetWindowLongPtr(hwnd, 0, lParam); InvalidateRect(hwnd, NULL, FALSE); break; case CPM_GETCOLOUR: return GetWindowLongPtr(hwnd, 0); case WM_LBUTTONUP: { CHOOSECOLOR cc = {0}; COLORREF custColours[16] = {0}; custColours[0] = GetWindowLongPtr(hwnd, sizeof(COLORREF)); cc.lStructSize = sizeof(CHOOSECOLOR); cc.hwndOwner = hwnd; cc.hInstance = (HWND)hInst; cc.rgbResult = GetWindowLongPtr(hwnd, 0); cc.lpCustColors = custColours; cc.Flags = CC_ANYCOLOR|CC_FULLOPEN|CC_RGBINIT; if (ChooseColor(&cc)) { SetWindowLongPtr(hwnd, 0, cc.rgbResult); SendMessage(GetParent(hwnd), WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(hwnd), CPN_COLOURCHANGED), (LPARAM)hwnd); InvalidateRect(hwnd, NULL, FALSE); } break; } case WM_ENABLE: InvalidateRect(hwnd, NULL, FALSE); break; case WM_NCPAINT: case WM_PAINT: { PAINTSTRUCT ps; HDC hdc1; RECT rc; HBRUSH hBrush; hdc1 = BeginPaint(hwnd, &ps); GetClientRect(hwnd, &rc); DrawEdge(hdc1, &rc, EDGE_ETCHED, BF_RECT); InflateRect(&rc, -2, -2); if (IsWindowEnabled(hwnd)) hBrush = CreateSolidBrush(GetWindowLongPtr(hwnd, 0)); else hBrush = CreateHatchBrush(HS_BDIAGONAL, GetSysColor(COLOR_GRAYTEXT)); SetBkColor(hdc1, GetSysColor(COLOR_BTNFACE)); FillRect(hdc1, &rc, hBrush); DeleteObject(hBrush); EndPaint(hwnd, &ps); break; } } return DefWindowProc(hwnd, message, wParam, lParam); }
void CStandardApertureViewStatic::Draw(CDC* dc) { CCEtoODBDoc* doc = getCamCadDoc(); CCamCadDocGraph camCadDocGraph(doc); static bool writeCcFileForDebugFlag = false; if (writeCcFileForDebugFlag) { //doc->SaveDatafile("C:\\CStandardApertureViewStatic-Debug.cc"); } if (m_camCadFrame == NULL) { return; } LOGFONT logFont; logFont.lfHeight = 0; logFont.lfWidth = 0; logFont.lfEscapement = 0; logFont.lfOrientation = 0; logFont.lfWeight = FW_NORMAL; logFont.lfItalic = 0; logFont.lfUnderline = 0; logFont.lfStrikeOut = 0; logFont.lfCharSet = ANSI_CHARSET; logFont.lfOutPrecision = OUT_DEFAULT_PRECIS; logFont.lfClipPrecision = CLIP_DEFAULT_PRECIS; logFont.lfQuality = ANTIALIASED_QUALITY; logFont.lfPitchAndFamily = DEFAULT_PITCH || FF_SWISS; strncpy(logFont.lfFaceName,"Microsoft Sans Serif",LF_FACESIZE); CSize windowExtents = dc->GetWindowExt(); CPoint windowOrigin = dc->GetWindowOrg(); for (int displayLayerIndex = 0;displayLayerIndex < m_camCadFrame->getDisplayedLayerCount();displayLayerIndex++) { int layerIndex = m_camCadFrame->getDisplayedLayerIndex(displayLayerIndex); LayerStruct* layer = doc->getLayerAt(layerIndex); bool stencilLayerFlag = ((layer->getName().CompareNoCase(QDimStencilPad) == 0) || (layer->getName().CompareNoCase(QBrightStencilPad) == 0) ); for (POSITION filePos = doc->getFileList().GetHeadPosition();filePos != NULL;) { FileStruct *file = doc->getFileList().GetNext(filePos); if (!file->isShown() || file->isHidden() || file->notPlacedYet()) continue; if (file->getBlock() == NULL) continue; CTMatrix matrix; matrix.translateCtm(file->getInsertX(),file->getInsertY()); matrix.rotateRadiansCtm(file->getRotation()); matrix.scale(file->getScale(),file->getScale()); double fileX = file->getInsertX(); double fileRot = file->getRotation(); int fileMirror = (doc->getBottomView() ? MIRROR_FLIP : 0) ^ (file->isMirrored() ? MIRROR_FLIP | MIRROR_LAYERS : 0); if (doc->getBottomView()) { fileX = -fileX; fileRot = -fileRot; matrix.scale(-1.,1.); } matrix.scale(1./m_scaleFactor,1./m_scaleFactor); matrix.translate(-windowExtents.cx * m_scaleFactor/2.,-windowExtents.cy * m_scaleFactor/2.); Mat2x2 m; RotMat2(&m, fileRot); for (POSITION dataPos = file->getBlock()->getDataList().GetHeadPosition();dataPos != NULL;) { DataStruct *data = file->getBlock()->getDataList().GetNext(dataPos); LayerStruct* layerStruct = doc->getLayerAt(data->getLayerIndex()); if (layerStruct->getLayerIndex() != layerIndex) { continue; } switch (data->getDataType()) { case dataTypeText: { TextStruct* textStruct = data->getText(); dc->SetTextColor(layerStruct->getColor()); drawText(dc,textStruct); } break; case dataTypeInsert: { switch (data->getInsert()->getInsertType()) { case insertTypeUnknown: case insertTypePcbComponent: case insertTypePcb: case insertTypeDrillTool: case insertTypeSymbol: case insertTypeStencilHole: break; default: continue; } if (data->getInsert()->getPlacedBottom() ^ (doc->getBottomView() != 0)) continue; BlockStruct *subblock = doc->Find_Block_by_Num(data->getInsert()->getBlockNumber()); Point2 point2; point2.x = data->getInsert()->getOriginX() * file->getScale(); if (fileMirror & MIRROR_FLIP) point2.x = -point2.x; point2.y = data->getInsert()->getOriginY() * file->getScale(); TransPoint2(&point2, 1, &m, fileX, file->getInsertY()); if ( (subblock->getFlags() & BL_TOOL) || (subblock->getFlags() & BL_BLOCK_TOOL) || (subblock->getFlags() & BL_APERTURE) || (subblock->getFlags() & BL_BLOCK_APERTURE) ) { dc->SetPixelV(round(point2.x / m_scaleFactor), round(point2.y / m_scaleFactor), doc->get_layer_color(data->getLayerIndex(), fileMirror)); } else if (subblock->extentIsValid()) { double _rot; if (fileMirror & MIRROR_FLIP) _rot = fileRot - data->getInsert()->getAngle(); else _rot = fileRot + data->getInsert()->getAngle(); int _mirror = fileMirror ^ data->getInsert()->getMirrorFlags(); double _scale = file->getScale() * data->getInsert()->getScale(); double xmin, xmax, ymin, ymax; TransformInsertExtents(&xmin, &xmax, &ymin, &ymax, subblock, point2.x, point2.y, _scale, _rot, _mirror); HPEN orgPen, hPen; HBRUSH orgBrush; hPen = CreatePen(PS_SOLID, 0, doc->getSettings().HideDetailColor); orgPen = (HPEN) SelectObject(dc->m_hDC, hPen); orgBrush = (HBRUSH) dc->SelectStockObject(HOLLOW_BRUSH); dc->Rectangle(round(xmin / m_scaleFactor), round(ymax / m_scaleFactor), round(xmax / m_scaleFactor), round(ymin / m_scaleFactor)); DeleteObject(SelectObject(dc->m_hDC, orgPen)); SelectObject(dc->m_hDC, orgBrush); } } break; case dataTypePoint: { if (!doc->FindLayer(data->getLayerIndex())->isWorldView()) continue; Point2 point2; point2.x = data->getPoint()->x * file->getScale(); if (fileMirror) point2.x = -point2.x; point2.y = data->getPoint()->y * file->getScale(); TransPoint2(&point2, 1, &m, fileX, file->getInsertY()); dc->SetPixelV(round(point2.x / m_scaleFactor), round(point2.y / m_scaleFactor), doc->get_layer_color(data->getLayerIndex(), fileMirror)); } break; case dataTypePoly: { COLORREF layerColor = doc->get_layer_color(data->getLayerIndex(), fileMirror); int widthIndex = -2; HPEN orgPen, hPen; hPen = CreatePen(PS_SOLID, 0, layerColor); orgPen = (HPEN) SelectObject(dc->m_hDC, hPen); HBRUSH originalBrush,brush; if (stencilLayerFlag) { brush = CreateHatchBrush(HS_DIAGCROSS,layerColor); } else { brush = CreateSolidBrush(layerColor); } originalBrush = (HBRUSH)SelectObject(dc->m_hDC,brush); POSITION polyPos = data->getPolyList()->GetHeadPosition(); while (polyPos != NULL) { CPoly *poly = data->getPolyList()->GetNext(polyPos); if (poly->getWidthIndex() != widthIndex) { widthIndex = poly->getWidthIndex(); double width = doc->getWidth(widthIndex); int pixels = round(width / m_scaleFactor); HPEN hPen = CreatePen(PS_SOLID,pixels, layerColor); DeleteObject(SelectObject(dc->m_hDC,hPen)); } if (poly->isFilled()) { dc->BeginPath(); } double bulge, lastx, lasty; BOOL First = TRUE; POSITION pntPos = poly->getPntList().GetHeadPosition(); while (pntPos) { CPnt *pnt = poly->getPntList().GetNext(pntPos); Point2 point2; point2.x = pnt->x * file->getScale(); if (fileMirror & MIRROR_FLIP) point2.x = -point2.x; point2.y = pnt->y * file->getScale(); TransPoint2(&point2, 1, &m, fileX, file->getInsertY()); if (First) dc->MoveTo(round(point2.x / m_scaleFactor), round(point2.y / m_scaleFactor)); else { if (fabs(bulge) < BULGE_THRESHOLD) dc->LineTo(round(point2.x / m_scaleFactor), round(point2.y / m_scaleFactor)); else { double da, sa, r, cx, cy; da = atan(bulge) * 4; if (fileMirror & MIRROR_FLIP) da = -da; ArcPoint2Angle(lastx, lasty, point2.x, point2.y, da, &cx, &cy, &r, &sa); if (Platform == WINNT) // Windows NT { dc->SetArcDirection(da<0.0 ? AD_CLOCKWISE : AD_COUNTERCLOCKWISE); dc->ArcTo(lround((cx - r) / m_scaleFactor), lround((cy + r) / m_scaleFactor), lround((cx + r) / m_scaleFactor), lround((cy - r) / m_scaleFactor), lround(lastx / m_scaleFactor), lround(lasty / m_scaleFactor), lround(point2.x / m_scaleFactor), lround(point2.y / m_scaleFactor)); dc->SetArcDirection(AD_COUNTERCLOCKWISE); dc->LineTo(lround(point2.x / m_scaleFactor),lround(point2.y / m_scaleFactor)); } else // Windows 95 { if (cx / m_scaleFactor > doc->maxXCoord || cx / m_scaleFactor < doc->minXCoord || cy / m_scaleFactor > doc->maxYCoord || cy / m_scaleFactor < doc->minYCoord) dc->LineTo((int)(point2.x / m_scaleFactor),(int)(point2.y / m_scaleFactor)); else if (poly->isFilled())// && showFills) AngleArc_Lines95(dc, (int)(cx / m_scaleFactor), (int)(cy / m_scaleFactor), r / m_scaleFactor, sa, da); else { if (da < 0.0) // clockwise { dc->Arc((int)((cx - r) / m_scaleFactor), (int)((cy + r) / m_scaleFactor), (int)((cx + r) / m_scaleFactor), (int)((cy - r) / m_scaleFactor), (int)(point2.x / m_scaleFactor), (int)(point2.y / m_scaleFactor), (int)(lastx / m_scaleFactor), (int)(lasty / m_scaleFactor)); } else // counter-clockwise { dc->Arc((int)((cx - r) / m_scaleFactor), (int)((cy + r) / m_scaleFactor), (int)((cx + r) / m_scaleFactor), (int)((cy - r) / m_scaleFactor), (int)(lastx / m_scaleFactor), (int)(lasty / m_scaleFactor), (int)(point2.x / m_scaleFactor), (int)(point2.y / m_scaleFactor)); } dc->MoveTo((int)(point2.x / m_scaleFactor),(int)(point2.y / m_scaleFactor)); } } } } First = FALSE; bulge = pnt->bulge; lastx = point2.x; lasty = point2.y; } if (poly->isFilled()) { dc->EndPath(); dc->StrokeAndFillPath(); } } DeleteObject(SelectObject(dc->m_hDC, orgPen)); DeleteObject(SelectObject(dc->m_hDC, originalBrush)); } break; } } } } }
HRESULT MainWindow::OnCreate() { HRESULT hr = S_OK; // Create the background brush. brush = CreateHatchBrush(HS_BDIAGONAL, RGB(0, 0x80, 0xFF)); if (brush == NULL) { hr = __HRESULT_FROM_WIN32(GetLastError()); } // Create the rebar control. if (SUCCEEDED(hr)) { hr = rebar.Create(m_hInstance, m_hwnd, IDC_REBAR_CONTROL); } // Create the toolbar control. if (SUCCEEDED(hr)) { hr = toolbar.Create(m_hInstance, m_hwnd, IDC_TOOLBAR, TBSTYLE_FLAT | TBSTYLE_TOOLTIPS); } // Set the image list for toolbar buttons (normal state). if (SUCCEEDED(hr)) { hr = toolbar.SetImageList( Toolbar::Normal, // Image list for normal state IDB_TOOLBAR_IMAGES_NORMAL, // Bitmap resource Size(48, 48), // Size of each button 5, // Number of buttons RGB(0xFF, 0x00, 0xFF) // Color mask ); } // Set the image list for toolbar buttons (disabled state). if (SUCCEEDED(hr)) { hr = toolbar.SetImageList( Toolbar::Disabled, // Image list for normal state IDB_TOOLBAR_IMAGES_DISABLED, // Bitmap resource Size(48, 48), // Size of each button 5, // Number of buttons RGB(0xFF, 0x00, 0xFF) // Color mask ); } // Add buttons to the toolbar. if (SUCCEEDED(hr)) { // Play hr = toolbar.AddButton(Toolbar::Button(ID_IMAGE_PLAY, IDC_BUTTON_PLAY)); } if (SUCCEEDED(hr)) { // Stop hr = toolbar.AddButton(Toolbar::Button(ID_IMAGE_STOP, IDC_BUTTON_STOP)); } if (SUCCEEDED(hr)) { // Pause hr = toolbar.AddButton(Toolbar::Button(ID_IMAGE_PAUSE, IDC_BUTTON_PAUSE)); } if (SUCCEEDED(hr)) { // Mute hr = toolbar.AddButton(Toolbar::Button(ID_IMAGE_MUTE_OFF, IDC_BUTTON_MUTE)); } // Add the toolbar to the rebar control. if (SUCCEEDED(hr)) { hr = rebar.AddBand(toolbar.Window(), 0); } //// Create the slider for seeking. if (SUCCEEDED(hr)) { hr = Slider_Init(); // Initialize the Slider control. } if (SUCCEEDED(hr)) { hr = seekbar.Create(m_hwnd, Rect(0, 0, 300, 16), IDC_SEEKBAR); } if (SUCCEEDED(hr)) { hr = seekbar.SetThumbBitmap(IDB_SLIDER_THUMB); seekbar.SetBackground(CreateSolidBrush(RGB(239, 239, 231))); seekbar.Enable(FALSE); } if (SUCCEEDED(hr)) { hr = rebar.AddBand(seekbar.Window(), 1); } //// Create the slider for changing the volume. if (SUCCEEDED(hr)) { hr = volumeSlider.Create(m_hwnd, Rect(0, 0, 100, 32), IDC_VOLUME); } if (SUCCEEDED(hr)) { hr = volumeSlider.SetThumbBitmap(IDB_SLIDER_VOLUME); volumeSlider.SetBackground(CreateSolidBrush(RGB(239, 239, 231))); volumeSlider.Enable(TRUE); // Set the range of the volume slider. In my experience, only the top half of the // range is audible. volumeSlider.SetRange(MIN_VOLUME / 2, MAX_VOLUME); volumeSlider.SetPosition(MAX_VOLUME); } if (SUCCEEDED(hr)) { hr = rebar.AddBand(volumeSlider.Window(), 2); } // Create the DirectShow player object. if (SUCCEEDED(hr)) { m_pPlayer = new DShowPlayer(m_hwnd); if (m_pPlayer == NULL) { hr = E_OUTOFMEMORY; } } // Set the event notification window. if (SUCCEEDED(hr)) { hr = m_pPlayer->SetEventWindow(m_hwnd, WM_GRAPH_EVENT); } // Set default UI state. if (SUCCEEDED(hr)) { UpdateUI(); } return hr; }