Example #1
0
void RoundRectTextButton::draw()const
{
    int const W = width_m;
    int const H = height_m;
    switch (getState()) {
    case State::LEFT:
        rect_m.draw(HSV(colorH_m, 0.5, 0.9));
        FontAsset(FONT_NAME).drawCenter(text_m, rect_m.center);
        break;
    case State::MOUSE_OVER:
        RoundRect(rect_m.rect.scaled(1.03), 5).moveBy(-W*SCALE/2, -H*SCALE/2).draw(HSV(colorH_m, 0.8, 0.9));
        FontAsset(FONT_NAME).drawCenter(text_m, rect_m.center);
        break;
    case State::PRESSED:
        RoundRect(rect_m.rect.scaled(1.03), 5).moveBy(-W*SCALE/2, -H*SCALE/2+2).draw(HSV(colorH_m, 0.8, 0.6));
        FontAsset(FONT_NAME).drawCenter(text_m, rect_m.center);
        break;
    case State::RELEASED:
        rect_m.draw(HSV(colorH_m, 0.5, 0.9));
        FontAsset(FONT_NAME).drawCenter(text_m, rect_m.center);
        break;
    default:
        break;
    }
}
Example #2
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);
}
Example #3
0
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);

}
Example #4
0
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 绘制
VOID COpenDlg::OnPaint()
{
	HDC hDC;
	HPEN hPen;
	BOOL bPreview;
	HBRUSH hBrush;
	PAINTSTRUCT psPaint;

	// 绘制预览区域
	hDC = BeginPaint(m_hWnd, &psPaint);

	// 判断是否预览图像
	bPreview = IsPreviewChecked();

	// 绘制预览边框
	hPen = (HPEN) SelectObject(hDC, CreatePen(PS_SOLID, 1, RGB(160, 160, 160)));	
	hBrush = (HBRUSH) SelectObject(hDC, bPreview ? GetStockObject(WHITE_BRUSH) : GetSysColorBrush(COLOR_3DFACE));
	RoundRect(hDC, m_rtPreview.left, m_rtPreview.top, m_rtPreview.right, m_rtPreview.bottom, 8, 8);	
	SelectObject(hDC, hBrush);
	hBrush = (HBRUSH) SelectObject(hDC, GetSysColorBrush(COLOR_3DFACE));
	RoundRect(hDC, m_rtPreview.left - 36, m_rtPreview.top, m_rtPreview.left - 7, m_rtPreview.bottom, 8, 8);
	DeleteObject(SelectObject(hDC, hPen));
	SelectObject(hDC, hBrush);

	// 绘制图像
	if (bPreview && m_pWnd->m_uTotalFrame)
	{
		m_pWnd->Draw(hDC);
	}

	// 结束绘制
	EndPaint(m_hWnd, &psPaint);
}
Example #5
0
RoundRectTextButton::RoundRectTextButton(int x, int y, int w, int h, double colorH, String text, std::function<void(void)> handler)
    :LambdaButton(Shape(RoundRect(x, y, w, h, 5)), handler),
    rect_m(RoundRect(x, y, w, h, 5)),
    colorH_m(colorH),
    text_m(text),
    width_m(w),
    height_m(h)
{}
Example #6
0
void draw_captions(HDC hdc, WORD t)
{
	int i;
	char szdata[100];

		SetBkColor (hdc, PALETTERGB(0,0,100));
		SetTextColor (hdc, PALETTERGB(255,255,255));
		SetBkMode(hdc, TRANSPARENT);
		SelectObject(hdc, DRAW.scaleFont);
		/*
	
        switch (objects[t]->type) 
		{
				case OB_EVAL:
					strncpy(szdata, ((EVALOBJ *) objects[t])->expression,12);
					szdata[12]='.';szdata[13]='.';szdata[14]=0;
					break;
				case OB_COMPARE:
					switch (((COMPAREOBJ *) objects[t])->method)
					{
							case 0: strcpy(szdata, "A>B"); break;
							case 1: strcpy(szdata, "A>=B"); break;
							case 2: strcpy(szdata, "A<B"); break;
							case 3: strcpy(szdata, "A<=B"); break;
							case 4: strcpy(szdata, "A=B"); break;
					}
					break;
				default: strcpy(szdata, objects[t]->tag); 
					break;
		}*/
		strcpy(szdata, objects[t]->tag); 

		ExtTextOut(hdc, SX+objects[t]->xPos+3,SY+objects[t]->yPos+2, 0, NULL,szdata, strlen(szdata), NULL ) ;

		SetBkColor (hdc, PALETTERGB(0,128,128));
		SetTextColor (hdc, PALETTERGB(100,255,200));
		SelectObject (hdc, DRAW.brush_yellow);
		for (i=0;i<objects[t]->inports;i++)
		{
		  RoundRect(hdc, SX+objects[t]->xPos, SY+objects[t]->yPos+CON_START-4+i*CON_HEIGHT,
		        SX+objects[t]->xPos+CON_MAGNETIC, SY+objects[t]->yPos+CON_START-4+i*CON_HEIGHT+CON_MAGNETIC,
				10, 10);
		  if (!objects[t]->in_ports[i].in_name[0]) wsprintf(szdata,"%d",i+1); else strcpy(szdata,objects[t]->in_ports[i].in_name);
		  ExtTextOut(hdc, SX+objects[t]->xPos+12,SY+objects[t]->yPos-4+CON_START+i*CON_HEIGHT, 0, NULL,szdata, strlen(szdata), NULL ) ;
		  
		}
		SelectObject (hdc, DRAW.brush_orange);
		for (i=0;i<objects[t]->outports;i++)
		{
			RoundRect(hdc, SX+objects[t]->xPos+objects[t]->width-CON_MAGNETIC, SY+objects[t]->yPos+CON_START-4+i*CON_HEIGHT,
		        SX+objects[t]->xPos+objects[t]->width, SY+objects[t]->yPos+CON_START-4+i*CON_HEIGHT+CON_MAGNETIC,
				10, 10); 
		    if (!objects[t]->out_ports[i].out_name[0]) wsprintf(szdata,"%d",i+1); else strcpy(szdata,objects[t]->out_ports[i].out_name);
			SetTextAlign(hdc,TA_RIGHT);
		    ExtTextOut(hdc, SX+objects[t]->xPos+objects[t]->width-CON_MAGNETIC-4, SY+objects[t]->yPos-4+CON_START+i*CON_HEIGHT, 0, NULL,szdata, strlen(szdata), NULL ) ;
			SetTextAlign(hdc,TA_LEFT); 
		}
}
void draw_box(HDC _hDC, const RECT& _rBox, int _EdgeRoundness, float _Alpha)
{
	if (equal(_Alpha, 1.0f))
	{
		if (_EdgeRoundness)
			oVB(RoundRect(_hDC, _rBox.left, _rBox.top, _rBox.right, _rBox.bottom, _EdgeRoundness, _EdgeRoundness));
		else
			oVB(Rectangle(_hDC, _rBox.left, _rBox.top, _rBox.right, _rBox.bottom));
		return;
	}

	// Copy the contents out (is there no way to access things directly?)
	BITMAPINFO bmi = {0};
	surface::info_t si;
	si.dimensions = int3(oWinRectW(_rBox), oWinRectH(_rBox), 1);
	si.format = surface::format::b8g8r8a8_unorm;

	bmi.bmiHeader = make_header(si);
	if (!bmi.bmiHeader.biWidth || !bmi.bmiHeader.biHeight)
		return;
	
	HDC hDCBitmap = CreateCompatibleDC(_hDC);
	scoped_bitmap hBmp(CreateDIBSection(hDCBitmap, (BITMAPINFO*)&bmi, DIB_RGB_COLORS, nullptr, nullptr, 0));

	scoped_select ScopedSelectBmp(hDCBitmap, hBmp);
	scoped_select ScopedSelectPen(hDCBitmap, current_pen(_hDC));
	scoped_select ScopedSelectBrush(hDCBitmap, current_brush(_hDC));

	// Resolve areas around the curved corners so we can to the blend directly
	// later on. But just do the minimum necessary, don't copy the interior that
	// we're going to re-draw with a RECT.
	if (_EdgeRoundness)
	{
		// Minimize rects...
		int dist = _EdgeRoundness;
		RECT TL = { _rBox.left, _rBox.top, _rBox.left + dist, _rBox.top + dist };
		RECT RT = { _rBox.right - dist, _rBox.top, _rBox.right, _rBox.top + dist };
		RECT BL = { _rBox.left, _rBox.bottom - dist, _rBox.left + dist, _rBox.bottom };
		RECT BR = { _rBox.right - dist, _rBox.bottom - dist, _rBox.right, _rBox.bottom };
		BitBlt(hDCBitmap, 0, 0, dist, dist, _hDC, _rBox.left, _rBox.top, SRCCOPY);
		BitBlt(hDCBitmap, bmi.bmiHeader.biWidth - dist, 0, dist, dist, _hDC, _rBox.right - dist, _rBox.top, SRCCOPY);
		BitBlt(hDCBitmap, 0, bmi.bmiHeader.biHeight - dist, dist, dist, _hDC, _rBox.left, _rBox.bottom - dist, SRCCOPY);
		BitBlt(hDCBitmap, bmi.bmiHeader.biWidth - dist, bmi.bmiHeader.biHeight - dist, dist, dist, _hDC, _rBox.right - dist, _rBox.bottom - dist, SRCCOPY);
		oVB(RoundRect(hDCBitmap, 0, 0, bmi.bmiHeader.biWidth, bmi.bmiHeader.biHeight, _EdgeRoundness, _EdgeRoundness));
	}

	else
		oVB(Rectangle(hDCBitmap, 0, 0, bmi.bmiHeader.biWidth, bmi.bmiHeader.biHeight));

	BLENDFUNCTION blend = { AC_SRC_OVER, 0, (BYTE)(static_cast<int>(_Alpha * 255.0f) & 0xff), 0 };
	oVB(AlphaBlend(_hDC, _rBox.left, _rBox.top, bmi.bmiHeader.biWidth, bmi.bmiHeader.biHeight, hDCBitmap, 0, 0, bmi.bmiHeader.biWidth, bmi.bmiHeader.biHeight, blend));
}
Example #8
0
void paint_round_rect_around_hwnd(HDC hdc, HWND hwnd_edit_parent, HWND hwnd_edit, COLORREF col)
{
    RECT    r;
    HBRUSH  br;
    HBRUSH  br_prev;
    HPEN    pen;
    HPEN    pen_prev;
    GetClientRect(hwnd_edit, &r);
    br = CreateSolidBrush(col);
    if (!br) return;
    pen = CreatePen(PS_SOLID, 1, col);
    pen_prev = SelectObject(hdc, pen);
    br_prev = SelectObject(hdc, br);
    rect_client_to_screen(&r, hwnd_edit_parent);
    /* TODO: the roundness value should probably be calculated from the dy of the rect */
    /* TODO: total hack: I manually adjust rectangle to values that fit g_hwnd_edit, as
       found by experimentation. My mapping of coordinates isn't right (I think I need
       mapping from window to window but even then it wouldn't explain -3 for y axis */
    RoundRect(hdc, r.left+4, r.top-3, r.right+12, r.bottom-3, 8, 8);
    if (br_prev)
        SelectObject(hdc, br_prev);
    if (pen_prev)
        SelectObject(hdc, pen_prev);
    DeleteObject(pen);
    DeleteObject(br);
}
void drawrect(HDC hdc,int x1,int y1,int x2,int y2,int color1,int color2,int w,int rn)
{
    HPEN newpen,oldpen;
    HBRUSH oldbrush;
    uintptr_t *r;
    unsigned r32;

    oldbrush=(HBRUSH)SelectObject(hdc,GetStockObject(color1&0xFF000000?NULL_BRUSH:DC_BRUSH));
    if(!oldbrush)log_err("ERROR in drawrect(): failed SelectObject(GetStockObject)\n");
    r32=SetDCBrushColor(hdc,color1);
    if(r32==CLR_INVALID)log_err("ERROR in drawrect(): failed SetDCBrushColor\n");

    newpen=CreatePen(w?PS_SOLID:PS_NULL,w,color2);
    if(!newpen)log_err("ERROR in drawrect(): failed CreatePen\n");
    oldpen=(HPEN)SelectObject(hdc,newpen);
    if(!oldpen)log_err("ERROR in drawrect(): failed SelectObject(newpen)\n");

    if(rn)
        RoundRect(hdc,x1,y1,x2,y2,rn,rn);
    else
        Rectangle(hdc,x1,y1,x2,y2);

    r=SelectObject(hdc,oldpen);
    if(!r)log_err("ERROR in drawrect(): failed SelectObject(oldpen)\n");
    r=SelectObject(hdc,oldbrush);
    if(!r)log_err("ERROR in drawrect(): failed SelectObject(oldbrush)\n");
    r32=DeleteObject(newpen);
    if(!r32)log_err("ERROR in drawrect(): failed SelectObject(newpen)\n");
}
Example #10
0
void CEditRoadLineDlg::ShowPosInfo(HDC hDC, int x, int y, char* pszInfo, int iFrameWidth, COLORREF color1, COLORREF color2)
{
	HPEN hPen;
	HBRUSH hBrush;
	hPen = CreatePen(PS_SOLID, iFrameWidth, color1);
	hBrush = CreateSolidBrush(color2);
	SelectObject(hDC, hPen);
	SelectObject(hDC, hBrush);
	BOOL fIsLeft = FALSE;
	BOOL fIsButton = FALSE;

	if(x > 764) fIsLeft = TRUE;
	if(y > 726) fIsButton = TRUE;

	int StartX;
	int StartY;
	if(fIsLeft) StartX = x - 230;
	else StartX = x + 30;
	if(fIsButton) StartY = y + 20;
	else StartY = y - 50;
	int iWidth = 0;
	if(fIsLeft) iWidth = 200;
	else iWidth = 200;

	RoundRect(hDC, StartX, StartY, StartX+iWidth, StartY+30, 30, 15);
	POINT cPoint1, cPoint2;
	if(fIsLeft)
	{
		cPoint1.x = StartX+200;
		cPoint2.x = StartX+180;
	}
	else
	{
		cPoint1.x = StartX;
		cPoint2.x = StartX+10;
	}
	if(fIsButton)
	{
		cPoint1.y = StartY;
		cPoint2.y = StartY+5;
	}
	else
	{
		cPoint1.y = StartY+25;
		cPoint2.y = StartY+30;
	}

	DrawLine(hDC, x, y, cPoint1.x, cPoint1.y, iFrameWidth, color1);
	DrawLine(hDC, x, y, cPoint2.x, cPoint2.y, iFrameWidth, color1);

	SetTextColor(hDC, RGB(0, 0, 0));
	SetBkMode(hDC, 3);
	int iTextLen = (int)strlen(pszInfo);
	if(iTextLen > 20) iTextLen = 20;
	TextOut(hDC, StartX+5, StartY+5, pszInfo, iTextLen);

	DeleteObject(hBrush);
	DeleteObject(hPen);
}
Example #11
0
// 画圆角矩形
void drawRoundRect(HDC hdc, RECT cellRect, COLORREF bgColor) {
	HBRUSH brush = CreateSolidBrush(bgColor);
	HPEN pen = CreatePen(PS_NULL, 0, NULL);
	SelectObject(hdc, brush);
	SelectObject(hdc, pen);
	RoundRect(hdc, cellRect.left, cellRect.top, cellRect.right, cellRect.bottom, 10, 10);
	DeleteObject(brush);
	DeleteObject(pen);
}
Example #12
0
void roundRect (COORDS figure, HDC hdc) {
	BeginPath (hdc);
	RoundRect (
		hdc,
		int (figure.xStart), int (figure.yStart),
		int (figure.xFinal), int (figure.yFinal),
		figure.wRound, figure.hRound);
	EndPath (hdc);
}
Example #13
0
void
RRect(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg,  COLORREF bg, int thickness, int style)
{
    LOGBRUSH logbrush;
    HBRUSH oldBrush;
    HPEN oldPen = SelectObject(hdc, CreatePen(PS_SOLID, thickness, fg));
    logbrush.lbStyle = (style == 0) ? BS_HOLLOW : BS_SOLID;
    logbrush.lbColor = (style == 2) ? fg : bg;
    logbrush.lbHatch = 0;
    oldBrush = SelectObject(hdc, CreateBrushIndirect(&logbrush));
    RoundRect(hdc, x1, y1, x2, y2, 16, 16);
    DeleteObject(SelectObject(hdc, oldBrush));
    DeleteObject(SelectObject(hdc, oldPen));
}
Example #14
0
void RoundRect(HDC hdc, RECT *rect, int cx, int cy, COLORREF fg, COLORREF bg)
{
	SetDCBrushColor(hdc, bg);
	SetDCPenColor(hdc, fg);
//	HBRUSH hBr = CreateSolidBrush(bg);
//	HPEN   hPn = CreatePen(0, PS_SOLID, fg);

//	HANDLE hOldBr  = SelectObject(hdc, hBr);
//	HANDLE hOldPen = SelectObject(hdc, hPn);

	RoundRect(hdc, rect->left, rect->top, rect->right, rect->bottom, cx, cy);

//	SelectObject(hdc, hOldBr);
//	SelectObject(hdc, hOldPen);
//	DeleteObject(hBr);
//	DeleteObject(hPn);
}
Example #15
0
static void
surface_draw_rounded_rect(XSurface *surf, short x, short y, unsigned short w, unsigned short h,
    unsigned short rounding,  unsigned char r,  unsigned char g, unsigned char b)
{
    HBRUSH hBrush;
    HBRUSH old;
    RECT rect;
    rect.left = (LONG)x;
    rect.top = (LONG)y;
    rect.right = (LONG)(x + w);
    rect.bottom = (LONG)(y + h);
    hBrush = CreateSolidBrush(RGB(r,g,b));
    old = SelectObject(surf->hdc, hBrush);
    RoundRect(surf->hdc, rect.left, rect.top, rect.right, rect.bottom,2*rounding, 2*rounding);
    SelectObject(surf->hdc, old);
    DeleteObject(hBrush);
}
Example #16
0
bool CDateTime::DrawThumbnail(node* pNode, HDC hdc, HDC hdcThumb, RECT* pRect, bool bSelected)
{
	pRect->right -= (pRect->left*2);

	HPEN hPen = CreatePen(PS_SOLID, 2, RGB(0xff, 0xff, 0xff));
	HGDIOBJ hPenOld = SelectObject(hdc, hPen);
    HGDIOBJ hBrushOld = SelectObject(hdc, (HBRUSH)GetStockObject(BLACK_BRUSH));
    RoundRect(hdc, pRect->left, pRect->top, pRect->right, pRect->bottom, 8, 8);
    SelectObject(hdc, hBrushOld);
	SelectObject(hdc, hPenOld);
	DeleteObject(hPen);

    LOGFONT lf;
    ZeroMemory(&lf, sizeof(lf));
    lf.lfHeight = -(pRect->bottom - pRect->top) / 2;
    lf.lfWeight = FW_BOLD;
    lf.lfCharSet = DEFAULT_CHARSET;
    HFONT hFont = CreateFontIndirect(&lf);

    SetBkMode(hdc, TRANSPARENT);
    SetBkColor(hdc, TRANSPARENT);
    HGDIOBJ hOldFont = SelectObject(hdc, hFont);

	SYSTEMTIME st;
	GetLocalTime(&st);
	//GetSystemTime(&st);
	WCHAR wzTime[20];
	TIME_ZONE_INFORMATION info = {0};
	GetTimeZoneInformation(&info);

	wsprintf(wzTime, L"%d:%d %s", (st.wHour > 12) ? (st.wHour - 12) : ((st.wHour == 0) ? 12 : st.wHour), st.wMinute, (st.wHour >= 12) ? L"PM" : L"AM");
	StringCchCopy(g_dateNode.wzText, ARRAYSIZE(g_dateNode.wzText), info.StandardName);

	GetTimeFormat(NULL, NULL, &st, L"h:mm tt", wzTime, ARRAYSIZE(wzTime));

	GetDateFormat(NULL, NULL, &st, L"dddd, MMMM dd, yyyy", g_dateNode.wzDetails, ARRAYSIZE(g_dateNode.wzDetails));

	SetTextColor(hdc, RGB(0xff,0xff,0xff));
	DrawTextW(hdc, wzTime, wcslen(wzTime), pRect, DT_VCENTER | DT_CENTER);

	SelectObject(hdc, hOldFont);
	DeleteObject(hFont);

	return true;
}
Example #17
0
PHP_METHOD(WinGdiPath, roundedRectangle)
{
    wingdi_devicecontext_object *dc_obj;
    wingdi_path_object *path_obj;
    int x1, y1, x2, y2,
        width, height;

    WINGDI_ERROR_HANDLING();
    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "llllll", 
            &x1, &y1, &x2, &y2, &width, &height) == FAILURE)
        return;
    WINGDI_RESTORE_ERRORS();

    path_obj = zend_object_store_get_object(getThis() TSRMLS_CC);
    dc_obj   = zend_object_store_get_object(path_obj->device_context TSRMLS_CC);

    RETURN_BOOL(RoundRect(dc_obj->hdc, x1, y1, x2, y2, width, height));
}
Example #18
0
void CHTMLContainerDlg::SetWindowEllispeFrame(int nWidthEllipse, int nHeightEllipse)
{
	HDC hdc = ::GetDC(m_hWnd);
	HDC hdcMem = CreateCompatibleDC(hdc);
	::ReleaseDC(m_hWnd, hdc);

	RECT rect;
	GetWindowRect(&rect);

	// 画一个圆角矩形。
	BeginPath(hdcMem);
	RoundRect(hdcMem, 0, 0, rect.right - rect.left, rect.bottom - rect.top, nWidthEllipse, nHeightEllipse); 
	EndPath(hdcMem);

	HRGN hRgn = PathToRegion(hdcMem); // 最后把路径转换为区域。

	SetWindowRgn(hRgn, TRUE);
}
Example #19
0
void draw_object(HDC hdc, WORD t)
{
		SelectObject (hdc, DRAW.pen_red);
	
		if (objects[t]==actobject) 
		{
			SelectObject (hdc, DRAW.brush_ltorange);
			Rectangle(hdc, SX+objects[t]->xPos-6,SY+objects[t]->yPos-6,
				SX+objects[t]->xPos+6+objects[t]->width,SY+objects[t]->yPos+6+objects[t]->height);
		}
		SelectObject (hdc, DRAW.pen_blue);
		SelectObject (hdc, DRAW.brush_ltgreen);
		RoundRect(hdc, SX+objects[t]->xPos, SY+objects[t]->yPos,
                    SX+objects[t]->xPos+objects[t]->width,SY+objects[t]->yPos+objects[t]->height, 15, 15); 

		SelectObject (hdc, DRAW.brush_blue);
		Rectangle(hdc, SX+objects[t]->xPos,SY+objects[t]->yPos,
			SX+objects[t]->xPos+objects[t]->width,SY+objects[t]->yPos+15);
}
//Adds lines and figures that are on the gradients
void
DrawGeometry(const HDC& hdc,const RECT& rect) {
    HPEN hPen;
    HBRUSH hBrush;

    hPen=CreatePen(PS_SOLID,2,RGB(30,30,30));
    SelectObject(hdc,hPen);
    hBrush=CreateSolidBrush(RGB(0,180,180));
    SelectObject(hdc,hBrush);
    RoundRect(hdc,rect.right*15/16-10,rect.bottom*7/8,rect.right*15/16+rect.right*1/16-10,rect.bottom*7/8+rect.right*1/16,15,15);
    DeleteObject(hPen);
    DeleteObject(hBrush);

    hPen=CreatePen(PS_DASH,1,RGB(255,0,0));
    SelectObject(hdc,hPen);
    hBrush=CreateSolidBrush(RGB(130,0,130));
    SelectObject(hdc,hBrush);
    Ellipse(hdc,rect.right*3/4,rect.bottom*7/8,rect.right*3/4+rect.right*1/16,rect.bottom*7/8+rect.right*1/16);
    DeleteObject(hPen);
    DeleteObject(hBrush);

    hPen=(HPEN)GetStockObject(NULL_PEN);
    SelectObject(hdc,hPen);
    hBrush=CreateSolidBrush(RGB(80,80,0));
    SelectObject(hdc,hBrush);
    Chord(hdc,rect.right*3/4,rect.bottom*3/4,rect.right*3/4+rect.right*1/16,rect.bottom*3/4+rect.right*1/16,5000,1500,100,155);
    DeleteObject(hPen);
    DeleteObject(hBrush);

    hPen=CreatePen(PS_DOT,1,RGB(255,255,255));
    SelectObject(hdc,hPen);
    hBrush=CreateSolidBrush(RGB(30,30,30));
    SelectObject(hdc,hBrush);
    Pie(hdc,rect.right*15/16-10,rect.bottom*3/4,rect.right*15/16+rect.right*1/16-10,rect.bottom*3/4+rect.right*1/16,10,500,100,15);
    DeleteObject(hPen);
    DeleteObject(hBrush);

    SelectObject(hdc,GetStockObject(BLACK_PEN));
    SelectObject(hdc,GetStockObject(NULL_BRUSH));
}
Example #21
0
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 PaintRectangles(HWND hwnd,int cxClient,int cyClient)
{
	PAINTSTRUCT ps;
	HDC hdc = BeginPaint (hwnd, &ps) ;

	Rectangle (hdc,     cxClient / 8,     cyClient / 8,
		7 * cxClient / 8, 7 * cyClient / 8) ;

	MoveToEx  (hdc,        0,        0, NULL) ;
	LineTo    (hdc, cxClient, cyClient) ;

	MoveToEx  (hdc,        0, cyClient, NULL) ;
	LineTo    (hdc, cxClient,        0) ;

	Ellipse   (hdc,     cxClient / 8,     cyClient / 8,
		7 * cxClient / 8, 7 * cyClient / 8) ;

	RoundRect (hdc,     cxClient / 4,     cyClient / 4,
		3 * cxClient / 4, 3 * cyClient / 4,
		cxClient / 4,     cyClient / 4) ;

	EndPaint (hwnd, &ps) ;
}
Example #23
0
// 毎フレーム update() の次に呼ばれる
void Rule::draw() const
{
	int t = System::FrameCount()*3;
	game1_m.draw(t % (1280 * 3) - 1280, 0, Alpha(50));
	game2_m.draw((t+1280) % (1280 * 3) - 1280, 0, Alpha(50));
	game3_m.draw((t + 2560) % (1280 * 3) - 1280, 0, Alpha(50));

	for (int i = 0; i < 40; i++)
	{
		cir[i].draw();
	}

	RoundRect(Rect(700, 700).setCenter(Window::Center()).movedBy(0, 0), 20).draw(Color(Palette::White, 180)).drawFrame(0.0, 3.0, Palette::Black);

	mainimage.drawAt(Window::Width() / 2, Window::Height() * 3 / 4 - 90);

	title(L"ルール!").drawCenter({ Window::Width() / 2, title.size }, Color(255, 0, 0));
	text(L"これはガベージコレクションをするゲームです").drawCenter({ Window::Width() / 2, (title.size + text.size) * 2 }, Color(0, 0, 0));
	subtitle(L"やり方").drawCenter({ Window::Width() / 2, (title.size + text.size + subtitle.size) * 2 }, Color(0, 0, 0));

	button_m.draw();
	clickable::Button::drawEffect();
	Cir::drawEffect();
}
Example #24
0
HBITMAP GetCalendarBackGnd(HWND hwndDlg,HDC hDC,COLORREF clrDrawingColor)
{
	RECT CurrentPos;HBRUSH hBrush; HPEN hPen;TOOLINFO ti;

	HDC hMemDC;
	HBITMAP hMemBitMap,hOldBitmap;	
	int Width,Height,Top,Left,iRatioX,iRatioY;
	
	ti.cbSize=sizeof(ti);
	ti.uFlags = TTF_TRANSPARENT | TTF_SUBCLASS;
	ti.hwnd = hwndDlg;
	
	GetClientRect(hwndDlg,&CurrentPos);
	Left=CurrentPos.left;
	Top=CurrentPos.top;
	Width=CurrentPos.right-CurrentPos.left+1;
	Height=CurrentPos.bottom-CurrentPos.top+1;

	hMemDC = CreateCompatibleDC(hDC);	
	hMemBitMap= CreateCompatibleBitmap(hDC, Width, Height);
	hOldBitmap=(HBITMAP)SelectObject(hMemDC,hMemBitMap);
	
	iRatioX=Width/50;
	iRatioY=Height/50;

	//clear all
	hBrush=CreateSolidBrush(clrDrawingColor);
	FillRect(hMemDC,&CurrentPos,hBrush);
	DeleteObject(hBrush);
	
	//draw gradiant backgnd
	for (int i=0;i<=25;i++)
	{
		hBrush=CreateSolidBrush(ColorAdjustLuma(clrDrawingColor,i*10));
		SelectObject(hMemDC,hBrush); 
		hPen=CreatePen(PS_SOLID,1,ColorAdjustLuma(clrDrawingColor,i*10));
		SelectObject(hMemDC,hPen);
		RoundRect(hMemDC,iRatioX*i ,iRatioY*i ,Width-iRatioX*i,Height-iRatioY*i,25,25);
		DeleteObject(hPen);
		DeleteObject(hBrush);
	}

	POINT pPoint;

	rDateRects[31].top=3;
	rDateRects[31].bottom=18;
	rDateRects[31].left=Width-30;
	rDateRects[31].right=Width-10;
	//add a tooltip
	ti.uId = 0;
	ti.lpszText = TEXT("Close");
	ti.rect = rDateRects[31];
	SendMessage(hToolTipWindow, TTM_ADDTOOL, 0, (LPARAM)&ti);
	
	pPoint.x=long(rDateRects[31].left+(rDateRects[31].right-rDateRects[31].left)/2);
	pPoint.y=long(rDateRects[31].top+(rDateRects[31].bottom-rDateRects[31].top)/2);	
	DrawText(hMemDC,TEXT("X"),pPoint,clrCalendarDate/3,1.3);

	rDateRects[32].top=2;
	rDateRects[32].bottom=20;
	rDateRects[32].left=Width/2-40;
	rDateRects[32].right=Width/2+40;
	//add a tooltip
	ti.uId = 1;
	ti.lpszText = TEXT("Change Current Calendar Year");
	ti.rect = rDateRects[32];
	SendMessage(hToolTipWindow, TTM_ADDTOOL, 0, (LPARAM)&ti);
	
	SelectObject(hMemDC,hOldBitmap);
	DeleteDC(hMemDC);

	return hMemBitMap; 
}
Example #25
0
void roundrect(int left,int top,int right,int bottom,int width,int height)
{
	ACL_ASSERT_BEGIN_PAINT;
	RoundRect(g_hmemdc,left,top,right,bottom,width,height);
}
Example #26
0
File: bios.cpp Project: phoyd/DS203
void BIOS::LCD::RoundRect(const CRect &rc, unsigned short clr) {
  RoundRect(rc.left, rc.top, rc.right, rc.bottom, clr);
}
Example #27
0
LRESULT CALLBACK WndProc( HWND wnd, DWORD msg, WPARAM wParam, LPARAM lParam )
{
    int i;
    int s;
    int j;
    HDC dc;
    PAINTSTRUCT ps;
    HBRUSH brush;
    char scorebuffer[20];
    RECT textrect;

    switch( msg )
    {
        case WM_CREATE:
            ShowCursor( 0 );
            SetTimer( wnd, TIMER_ID, 30, NULL );

            textrect.left = 0;
            textrect.right = WIDTH;
            textrect.top = 0;
            textrect.bottom = HEIGHT / 5;

            srand( time(0) );

            SendMessage( wnd, JM_RESET, 0, 0 );
            break;
        case JM_RESET:
            paddle.left = (WIDTH - PWIDTH) / 2;
            paddle.right = paddle.left + PWIDTH;
            paddle.bottom = HEIGHT - SPACE;
            paddle.top = paddle.bottom - PHEIGHT;

            starting = 1;
            reload = 2500 / numballs / 30;
            countdown = reload;

            for( i = 0; i < numballs; i++ )
            {
                ball[i].left = paddle.left + (PWIDTH - BDIAMETER) / 2;
                ball[i].right = ball[i].left + BDIAMETER;
                ball[i].bottom = paddle.top;
                ball[i].top = ball[i].bottom - BDIAMETER;

                ballp[i].vx = 0.0f;
                ballp[i].vy = 0.0f;
                ballp[i].active = 0;
            }
            break;
        case JM_LOSE:
            score = (numballs - 3) * 200;
            SendMessage( wnd, JM_RESET, 0, 0 );
            break;
        case WM_TIMER:
            if( wParam != TIMER_ID )
            {
                break;
            }
            if( starting )
            {
                if( !countdown )
                {
                    for( s = 0; s < numballs; s++ )
                    {
                        if( !ballp[s].active )
                        {
                            break;
                        }
                    }
                    if( s == numballs )
                    {
                        starting = 0;
                    }
                    else
                    {
                        ballp[s].active = 1;
                        ballp[s].vy = startvel;
                        ballp[s].vx = (float)(rand() % 15) - 15 / 2;
                    }
                    countdown = reload;
                }
                countdown--;
            }

            for( s = 0; s < numballs; s++ )
            {
                if( ballp[s].active )
                {
                    ball[s].top -= (int)ballp[s].vy;
                    ball[s].bottom = ball[s].top + BDIAMETER;
                    ball[s].left += (int)ballp[s].vx;
                    ball[s].right = ball[s].left + BDIAMETER;
                    ballp[s].vy -= gravity;
                    if( ball[s].bottom >= paddle.top)
                    {
                        if(  paddle.left <= ball[s].left + (BDIAMETER / 2) && paddle.right >= ball[s].right - (BDIAMETER / 2) )
                        {
                            ballp[s].vy = startvel;
                            ballp[s].vx = (ball[s].left - paddle.left + (BDIAMETER / 2) - (PWIDTH / 2)) / 2;
                            score += 10;
                            if( score >= (numballs - 2) * 200 )
                            {
                                if( numballs >= 10 )
                                {
                                    dc = GetDC( wnd );
                                    TextOut( dc, WIDTH / 3, HEIGHT / 2, "You Won!", 8 );
                                    ReleaseDC( wnd, dc );
                                    Sleep(2000);
                                    SendMessage( wnd, WM_CLOSE, 0, 0 );
                                }
                                else
                                {
                                    numballs++;
                                    SendMessage( wnd, JM_RESET, 0, 0 );
                                }
                            }
                        }
                        if( ball[s].bottom >= HEIGHT )
                        {
                            SendMessage( wnd, JM_LOSE, 0, 0 );
                            break;
                        }
                    }
                    if( ball[s].left <= (0 - (int)ballp[s].vx) || ball[s].right >= (WIDTH - (int)ballp[s].vx) )
                    {
                        ballp[s].vx = -(ballp[s].vx);
                    }
                    if( ball[s].top <= 0 )
                    {
                        ballp[s].vy = ((int)ballp[s].vy < 0 ) ? ballp[s].vy : -(ballp[s].vy);
                    }
                }
            }

            InvalidateRgn( wnd, NULL, 1 );
            break;
        case WM_MOUSEMOVE:
            paddle.left = LOWORD(lParam) - PWIDTH / 2;
            paddle.right = paddle.left + PWIDTH;
            break;
        case WM_PAINT:
            dc = BeginPaint( wnd, &ps );

            sprintf( scorebuffer, "Score: %d", score );
            TextOut( dc, 0, 0, scorebuffer, strlen( scorebuffer) );


            brush = CreateSolidBrush( 0 );

            SelectObject( dc, brush );

            RoundRect( dc, paddle.left, paddle.top, paddle.right, paddle.bottom, PWIDTH / 4, PHEIGHT );

            DeleteObject( brush );

            for( j = 0; j < numballs; j++ )
            {
                brush = CreateSolidBrush( colours[j] );
                SelectObject( dc, brush );
                Ellipse( dc, ball[j].left, ball[j].top, ball[j].right, ball[j].bottom );
                DeleteObject( brush );
            }

            EndPaint( wnd, &ps );
            break;
        case WM_DESTROY:
            KillTimer( wnd, TIMER_ID );
            ShowCursor( 1 );
            PostQuitMessage( 0 );
            break;
        default:
            return DefWindowProc( wnd, msg, wParam, lParam );
            break;
    }

    return 0;
}
Example #28
0
// ボタン用の画像読み込み
void Controls::LoadButtonImages(HWND hWnd, int id)
{
	HDC hdc;
	HBITMAP hBitmap; // 使い回し
	HBRUSH hBrush_1;
	
	if (id > 5) return;
	
	HFONT hGuiFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
	
	// 論理ブラシを作成
	hBrush_1 = CreateSolidBrush(RGB(252, 254, 252));
	
	// 元のWindowのデバイスコンテキストハンドルを取得
	hdc = GetDC(hWnd);
	
	switch (id)
	{
		case 1:
			// 画像1
			hdc_mem[0] = CreateCompatibleDC(NULL);
			hBitmap = CreateCompatibleBitmap(hdc, 360, 60);
			SelectObject(hdc_mem[0], hBitmap);
			Boxfill(hdc_mem[0], 0, 0, 360, 60, hBrush_1); // 塗りつぶし
			if (!LoadPictureOnResource(hdc_mem[0], MAKEINTRESOURCE(IDG_IMG7ZIP)))
				ShowLoadPictureError(1);
			
			// 文字を描画
			SelectObject(hdc_mem[0], hGuiFont);
			SetBkMode(hdc_mem[0], TRANSPARENT);
			DrawStringForImageButton(hdc_mem[0], langStr.szBtn7Zip, 39, 5, 180, 17, 219, 5, 360, 17, FALSE);
			DrawStringForImageButton(hdc_mem[0], langStr.szBtnComputer, 39, 25, 106, 37, 219, 25, 286, 37, FALSE);
			DrawStringForImageButton(hdc_mem[0], TEXT("["), 107, 25, 114, 57, 287, 25, 294, 57, FALSE);
			DrawStringForImageButton(hdc_mem[0], langStr.szBtnQDir, 135, 25, 180, 77, 315, 25, 360, 77, FALSE);
			DrawStringForImageButton(hdc_mem[0], langStr.szBtnUsersFiler, 39, 45, 180, 97, 219, 45, 360, 97, FALSE);
			
			break;
		
		case 2:
			// 画像2
			hdc_mem[1] = CreateCompatibleDC(NULL);
			hBitmap = CreateCompatibleBitmap(hdc, 420, 220);
			SelectObject(hdc_mem[1], hBitmap);
			Boxfill(hdc_mem[1], 0, 0, 420, 180, hBrush_1); // 塗りつぶし
			if (!LoadPictureOnResource(hdc_mem[1], MAKEINTRESOURCE(IDG_IMGDISK)))
				ShowLoadPictureError(2);
			
			// 文字を描画
			SelectObject(hdc_mem[1], hGuiFont);
			SetBkMode(hdc_mem[1], TRANSPARENT);
			DrawStringForImageButton(hdc_mem[1], langStr.szBtnTrueImage, 27, 5, 210, 17, 237, 5, 420, 17, FALSE);
			DrawStringForImageButton(hdc_mem[1], langStr.szBtnDiscWizard, 27, 25, 210, 37, 237, 25, 420, 37, FALSE);
			DrawStringForImageButton(hdc_mem[1], langStr.szBtnParagonBackupAndRecovery, 27, 45, 210, 57, 237, 45, 420, 57, FALSE);
			DrawStringForImageButton(hdc_mem[1], langStr.szBtnEaseUSTodoBackup, 27, 65, 210, 77, 237, 65, 420, 77, FALSE);
			DrawStringForImageButton(hdc_mem[1], langStr.szBtnAomeiBackupper, 27, 85, 210, 97, 237, 85, 420, 97, FALSE);
			DrawStringForImageButton(hdc_mem[1], langStr.szBtnEaseUSPartitionMaster, 27, 105, 210, 117, 237, 105, 420, 117, FALSE);
			DrawStringForImageButton(hdc_mem[1], langStr.szBtnMiniToolPartitionWizard, 27, 125, 210, 137, 237, 125, 420, 137, FALSE);
			DrawStringForImageButton(hdc_mem[1], langStr.szBtnAcronisDiskDirector, 27, 145, 210, 157, 237, 145, 420, 157, FALSE);
			DrawStringForImageButton(hdc_mem[1], langStr.szBtnParagonPartitionManager, 27, 165, 210, 177, 237, 165, 420, 177, FALSE);
			DrawStringForImageButton(hdc_mem[1], langStr.szBtnAomeiPartitionAssistant, 27, 185, 210, 197, 237, 185, 420, 197, FALSE);
			DrawStringForImageButton(hdc_mem[1], langStr.szBtnOtherDiskTool, 27, 205, 210, 217, 237, 205, 420, 217, FALSE);
			
			break;
		
		case 3:
			// 画像3
			hdc_mem[2] = CreateCompatibleDC(NULL);
			hBitmap = CreateCompatibleBitmap(hdc, 260, 200);
			SelectObject(hdc_mem[2], hBitmap);
			Boxfill(hdc_mem[2], 0, 0, 260, 200, hBrush_1); // 塗りつぶし
			if (!LoadPictureOnResource(hdc_mem[2], MAKEINTRESOURCE(IDG_IMGTOOLS)))
				ShowLoadPictureError(3);
			
			// ファイルアイコンを描画
			DrawFileImageEx(hdc_mem[2], TEXT("cmd.exe"), szSysDir, 4, 42, 134, 42);
			DrawFileImageEx(hdc_mem[2], TEXT("notepad.exe"), szSysDir, 4, 62, 134, 62);
			DrawFileImageEx(hdc_mem[2], TEXT("regedit.exe"), szWinDir, 4, 82, 134, 82);
			DrawFileImageEx(hdc_mem[2], TEXT("diskpart.exe"), szSysDir, 4, 102, 134, 102);
			
			// 文字を描画
			SelectObject(hdc_mem[2], hGuiFont);
			SetBkMode(hdc_mem[2], TRANSPARENT);
			DrawStringForImageButton(hdc_mem[2], langStr.szBtnReboot, 27, 5, 130, 17, 157, 5, 260, 17, FALSE);
			DrawStringForImageButton(hdc_mem[2], langStr.szBtnShutdown, 27, 25, 130, 37, 157, 25, 260, 37, FALSE);
			DrawStringForImageButton(hdc_mem[2], langStr.szBtnCommandPrompt, 27, 45, 130, 57, 157, 45, 260, 57, FALSE);
			DrawStringForImageButton(hdc_mem[2], langStr.szBtnNotepad, 27, 65, 130, 77, 157, 65, 260, 77, FALSE);
			DrawStringForImageButton(hdc_mem[2], langStr.szBtnRegEdit, 27, 85, 130, 97, 157, 85, 260, 97, FALSE);
			DrawStringForImageButton(hdc_mem[2], langStr.szBtnDiskpart, 27, 105, 130, 117, 157, 105, 260, 117, FALSE);
			DrawStringForImageButton(hdc_mem[2], langStr.szBtnLoadDriver, 27, 125, 130, 137, 157, 125, 260, 137, FALSE);
			DrawStringForImageButton(hdc_mem[2], langStr.szBtnMSIME, 27, 145, 130, 157, 157, 145, 260, 157, FALSE);
			DrawStringForImageButton(hdc_mem[2], langStr.szBtnWinRE, 27, 165, 130, 177, 157, 165, 260, 177, FALSE);
			DrawStringForImageButton(hdc_mem[2], langStr.szBtnInstallWindows, 27, 185, 130, 197, 157, 185, 260, 197, FALSE);
			
			break;
		
		case 4:
			{
				// 画像4 (apps)
				TCHAR szLaunchPath[MAX_PATH + 1];
				HBRUSH hBrush_2;
				hBrush_2 = CreateSolidBrush(RGB(236, 234, 164));
				
				hdc_mem[3] = CreateCompatibleDC(NULL);
				hBitmap = CreateCompatibleBitmap(hdc, 20, 300);
				SelectObject(hdc_mem[3], hBitmap);
				Boxfill(hdc_mem[3], 0, 0, 20, 300, hBrush_1); // 塗りつぶし
				if (!LoadPictureOnResource(hdc_mem[3], MAKEINTRESOURCE(IDG_IMGAPPS)))
					ShowLoadPictureError(4);
				
				SelectObject(hdc_mem[3], hBrush_1);
				
				// 枠を描画
				RoundRect(hdc_mem[3], 0, 60, 20, 80, 6, 6);
				SelectObject(hdc_mem[3], hBrush_2); // 色を変更
				RoundRect(hdc_mem[3], 0, 80, 20, 100, 6, 6);
				SelectObject(hdc_mem[3], hBrush_1); // 元に戻す
				RoundRect(hdc_mem[3], 0, 100, 20, 120, 6, 6);
				RoundRect(hdc_mem[3], 0, 120, 20, 140, 6, 6);
				RoundRect(hdc_mem[3], 0, 140, 20, 160, 6, 6);
				RoundRect(hdc_mem[3], 0, 160, 20, 180, 6, 6);
				RoundRect(hdc_mem[3], 0, 180, 20, 200, 6, 6);
				RoundRect(hdc_mem[3], 0, 200, 20, 220, 6, 6);
				RoundRect(hdc_mem[3], 0, 220, 20, 240, 6, 6);
				RoundRect(hdc_mem[3], 0, 240, 20, 260, 6, 6);
				RoundRect(hdc_mem[3], 0, 260, 20, 280, 6, 6);
				RoundRect(hdc_mem[3], 0, 280, 20, 300, 6, 6);
				
				// フォルダアイコンを描画
				DrawFolderImage(hdc_mem[3], 62, 82);
				
				// ファイルアイコンを描画
				DrawFileImage(hdc_mem[3], uaFilePath1, 2, 102);
				DrawFileImage(hdc_mem[3], uaFilePath2, 2, 122);
				DrawFileImage(hdc_mem[3], uaFilePath3, 2, 142);
				DrawFileImage(hdc_mem[3], uaFilePath4, 2, 162);
				DrawFileImage(hdc_mem[3], uaFilePath5, 2, 182);
				DrawFileImage(hdc_mem[3], uaFilePath6, 2, 202);
				DrawFileImage(hdc_mem[3], uaFilePath7, 2, 222);
				DrawFileImage(hdc_mem[3], uaFilePath8, 2, 242);
				DrawFileImage(hdc_mem[3], uaFilePath9, 2, 262);
				
				// USBメモリ内のランチャーのアイコンを取得 (取得できなかったらPStartのまま)
				for(int i = 1; i < 26; i++)
				{
					wsprintf(szLaunchPath, TEXT("%c:\\%s"), 'A'+i, ulPath);
					if (FileExist(szLaunchPath)) {
						// 塗りつぶしてから描画
						Boxfill(hdc_mem[3], 2, 42, 17, 57, hBrush_1);
						DrawFileImage(hdc_mem[3], szLaunchPath, 2, 42);
						break;
					}
				}
				
				// いろいろ削除
				DeleteObject(hBrush_2);
			}
			break;
		
		case 5:
			// 画像5
			HBRUSH hBrush_2;
			hBrush_2 = CreateSolidBrush(RGB(252, 186, 148));
			
			hdc_mem[4] = CreateCompatibleDC(NULL);
			hBitmap = CreateCompatibleBitmap(hdc, 122, 80);
			SelectObject(hdc_mem[4], hBitmap);
			Boxfill(hdc_mem[4], 0, 0, 122, 80, hBrush_1); // 塗りつぶし
			
			// 枠を描画
			SelectObject(hdc_mem[4], hBrush_1);
			RoundRect(hdc_mem[4], 0, 0, 61, 16, 6, 6);
			RoundRect(hdc_mem[4], 0, 16, 61, 32, 6, 6);
			RoundRect(hdc_mem[4], 0, 32, 61, 48, 6, 6);
			RoundRect(hdc_mem[4], 0, 48, 61, 64, 6, 6);
			RoundRect(hdc_mem[4], 16, 64, 61, 80, 6, 6);
			SelectObject(hdc_mem[4], hBrush_2);
			RoundRect(hdc_mem[4], 61, 0, 122, 16, 6, 6);
			RoundRect(hdc_mem[4], 61, 16, 122, 32, 6, 6);
			RoundRect(hdc_mem[4], 61, 32, 122, 48, 6, 6);
			RoundRect(hdc_mem[4], 61, 48, 122, 64, 6, 6);
			RoundRect(hdc_mem[4], 61, 64, 106, 80, 6, 6);
			SelectObject(hdc_mem[4], hBrush_1);
			
			// 文字を描画
			SelectObject(hdc_mem[4], hGuiFont);
			SetBkMode(hdc_mem[4], TRANSPARENT);
			DrawStringForImageButton(hdc_mem[4], TEXT("800x600"), 0, 3, 61, 15, 61, 3, 122, 15, TRUE);
			DrawStringForImageButton(hdc_mem[4], TEXT("1024x768"), 0, 19, 61, 31, 61, 19, 122, 31, TRUE);
			DrawStringForImageButton(hdc_mem[4], TEXT("1280x1024"), 0, 35, 61, 47, 61, 35, 122, 47, TRUE);
			DrawStringForImageButton(hdc_mem[4], TEXT("1920x1080"), 0, 51, 61, 63, 61, 51, 122, 63, TRUE);
			DrawStringForImageButton(hdc_mem[4], langStr.szBtnResChange, 15, 67, 61, 79, 61, 67, 105, 79, TRUE);
			
			break;
		
	}
	
	DeleteObject(hBitmap);
	DeleteObject(hBrush_1);
	ReleaseDC(hWnd, hdc);
}
Example #29
0
void DrawRoundRect(HDC hdc){
	RoundRect(hdc,100,100,300,300,50,50);
}
INT_PTR CALLBACK ColorChooserDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch(uMsg)
	{
	case WM_INITDIALOG:
		{
			//Initialize common controls
			INITCOMMONCONTROLSEX InitCtrlEx;
			InitCtrlEx.dwSize = sizeof(INITCOMMONCONTROLSEX);
			InitCtrlEx.dwICC  =  ICC_BAR_CLASSES;
			InitCommonControlsEx(&InitCtrlEx);
			InitializeSlider(hwndDlg,IDC_RedSlider,255,1,0,false); 
			InitializeSlider(hwndDlg,IDC_GreenSlider,255,1,0,false); 
			InitializeSlider(hwndDlg,IDC_BlueSlider,255,1,0,false); 


			HWND hWndComboBox=GetDlgItem(hwndDlg,IDC_Combo);
			//add items to combobox
			for (int i=0;i<9;i++)
				SendMessage(hWndComboBox,CB_ADDSTRING,0L,LPARAM(sColorOptions[i]));			
			//update each item data with its original index, it might have changed while sorting
			for (int i=0;i<9;i++)
				SendMessage(hWndComboBox,CB_SETITEMDATA,SendMessage(hWndComboBox,CB_FINDSTRING,0L,LPARAM(sColorOptions[i])),LPARAM(i));
			
			iRed=0;
			iGreen=0;
			iBlue=0;
			EnableWindow(GetDlgItem(hwndDlg,ID_APPLY),FALSE);
			EnableWindow(GetDlgItem(hwndDlg,ID_OK),FALSE);
			return FALSE;
		}
	case WM_CLOSE:
		EndDialog(hwndDlg, FALSE);
		return FALSE;
	case WM_COMMAND:
		// This switch identifies the control
		switch(LOWORD(wParam)) 
		{
		case ID_OK:
			{
				int iOptionIndex;
				HWND hWndComboBox=GetDlgItem(hwndDlg,IDC_Combo);				
				iOptionIndex=SendMessage(hWndComboBox,CB_GETITEMDATA,SendMessage(hWndComboBox,CB_GETCURSEL,0,0),0);
				//"Hour Numbers","Minute Ticks","Week Name","Date","Second Hand","Minute Hand","Hour Hand"
				WaitForSingleObject(g_hMutex,200); 
				switch(iOptionIndex)
				{
				case 0: clrHourNumber=RGB(iRed,iGreen,iBlue);break;
				case 1: clrMinuteTicks=RGB(iRed,iGreen,iBlue);break;
				case 2: clrWeek=RGB(iRed,iGreen,iBlue);break;
				case 3: clrDate=RGB(iRed,iGreen,iBlue);break;
				case 4: clrSecondHand=RGB(iRed,iGreen,iBlue);break;
				case 5: clrMinuteHand=RGB(iRed,iGreen,iBlue);break;
				case 6: clrHourHand=RGB(iRed,iGreen,iBlue);break;
				case 7: clrCalendarBackGnd=RGB(iRed,iGreen,iBlue);break;
				case 8: clrCalendarDate=RGB(iRed,iGreen,iBlue);break;
				}
				ReleaseMutex(g_hMutex); 
				EndDialog(hwndDlg, TRUE);
				return FALSE;
			}
		case ID_APPLY:
			{
				int iOptionIndex;
				HWND hWndComboBox=GetDlgItem(hwndDlg,IDC_Combo);				
				iOptionIndex=SendMessage(hWndComboBox,CB_GETITEMDATA,SendMessage(hWndComboBox,CB_GETCURSEL,0,0),0);
				//"Hour Numbers","Minute Ticks","Week Name","Date","Second Hand","Minute Hand","Hour Hand"
				WaitForSingleObject(g_hMutex,200); 
				switch(iOptionIndex)
				{
				case 0: clrHourNumber=RGB(iRed,iGreen,iBlue);break;
				case 1: clrMinuteTicks=RGB(iRed,iGreen,iBlue);break;
				case 2: clrWeek=RGB(iRed,iGreen,iBlue);break;
				case 3: clrDate=RGB(iRed,iGreen,iBlue);break;
				case 4: clrSecondHand=RGB(iRed,iGreen,iBlue);break;
				case 5: clrMinuteHand=RGB(iRed,iGreen,iBlue);break;
				case 6: clrHourHand=RGB(iRed,iGreen,iBlue);break;
				case 7: clrCalendarBackGnd=RGB(iRed,iGreen,iBlue);break;
				case 8: clrCalendarDate=RGB(iRed,iGreen,iBlue);break;
				}
				ReleaseMutex(g_hMutex); 
				EnableWindow(GetDlgItem(hwndDlg,ID_APPLY),FALSE);
				return FALSE;
			}

		case ID_CANCEL:
			EndDialog(hwndDlg, FALSE);
			return FALSE;
		case IDC_Combo:
			if (HIWORD(wParam)==CBN_SELENDOK)
			{
				int iOptionIndex;COLORREF clrOldColor;
				iOptionIndex=SendMessage(HWND(lParam),CB_GETITEMDATA,SendMessage(HWND(lParam),CB_GETCURSEL,0,0),0);
				WaitForSingleObject(g_hMutex,200); 
				switch(iOptionIndex)
				{
				case 0: clrOldColor=clrHourNumber;break;
				case 1: clrOldColor=clrMinuteTicks;break;
				case 2: clrOldColor=clrWeek;break;
				case 3: clrOldColor=clrDate;break;
				case 4: clrOldColor=clrSecondHand;break;
				case 5: clrOldColor=clrMinuteHand;break;
				case 6: clrOldColor=clrHourHand;break;
				case 7: clrOldColor=clrCalendarBackGnd;break;
				case 8: clrOldColor=clrCalendarDate;break;
				}

				iRed=GetRValue(clrOldColor);
				iGreen=GetGValue(clrOldColor);
				iBlue=GetBValue(clrOldColor);

				SendMessage(GetDlgItem(hwndDlg,IDC_RedSlider),TBM_SETPOS ,TRUE,iRed);
				SendMessage(GetDlgItem(hwndDlg,IDC_GreenSlider),TBM_SETPOS ,TRUE,iGreen);
				SendMessage(GetDlgItem(hwndDlg,IDC_BlueSlider),TBM_SETPOS ,TRUE,iBlue);
				UpdatePreviewArea(hwndDlg,GetDC(hwndDlg),IDC_ResultPreview,RGB(iRed,iGreen,iBlue));
				EnableWindow(GetDlgItem(hwndDlg,ID_OK),TRUE);
				ReleaseMutex(g_hMutex); 
				return FALSE;
			}
			break;
		}		
	case WM_HSCROLL:
		{
			if (lParam)
			{
				DWORD clrOld=RGB(iRed,iGreen,iBlue);
				switch (GetDlgCtrlID(HWND(lParam)))
				{
					case IDC_RedSlider:
						iRed=SendMessage(HWND(lParam),TBM_GETPOS ,0,0);
						break;
					case IDC_GreenSlider:
						iGreen=SendMessage(HWND(lParam),TBM_GETPOS ,0,0);
						break;
					case IDC_BlueSlider:
						iBlue=SendMessage(HWND(lParam),TBM_GETPOS ,0,0);
						break;
				}
				UpdatePreviewArea(hwndDlg,GetDC(hwndDlg),IDC_ResultPreview,RGB(iRed,iGreen,iBlue));
				if(RGB(iRed,iGreen,iBlue)!=clrOld)
					EnableWindow(GetDlgItem(hwndDlg,ID_APPLY),TRUE);
				return FALSE;
			}		
			break;
		}
	case WM_PAINT:
		{
			//refresh the boxes
			PAINTSTRUCT ps;
			BeginPaint(hwndDlg, &ps);			
			UpdatePreviewArea(hwndDlg,ps.hdc,IDC_ResultPreview,RGB(iRed,iGreen,iBlue));
			EndPaint(hwndDlg, &ps);
			return FALSE;
		}
	case WM_NOTIFY:
		{
			NMHDR tNotifyHeader; NMCUSTOMDRAW tRedrawInfo;
			if (lParam!=NULL)
			{
				tNotifyHeader=*(LPNMHDR)lParam;
				if (tNotifyHeader.code==NM_CUSTOMDRAW)
				{
					tRedrawInfo=*(LPNMCUSTOMDRAW) lParam;
					switch (tRedrawInfo.dwDrawStage)
					{
					case CDDS_PREPAINT:
						// This is the way a dialog box can send back lresults
						SetWindowLong(hwndDlg, DWL_MSGRESULT, CDRF_NOTIFYITEMDRAW); 
						return TRUE;

					case CDDS_ITEMPREPAINT :
						if (tRedrawInfo.dwItemSpec == TBCD_THUMB)
						{
							HBRUSH hBrush;HPEN hPen;
							COLORREF clrDrawColor;int iSaveDCState;			
							switch (tNotifyHeader.idFrom)
							{
								case IDC_RedSlider:
									clrDrawColor=RGB(iRed,0,0);
									break;
								case IDC_GreenSlider:
									clrDrawColor=RGB(0,iGreen,0);
									break;
								case IDC_BlueSlider:
									clrDrawColor=RGB(0,0,iBlue);
									break;
							}
							iSaveDCState=SaveDC(tRedrawInfo.hdc);
							

							//If thumb is selected switch to hatched brush
							if (tRedrawInfo.uItemState && CDIS_SELECTED)
							{
								// create a hatch-patterned pixel pattern for patterned brush
								WORD PatternPixel[8] ={ 0x0055,0x00aa,0x0055,0x00aa,0x0055,0x00aa,0x0055,0x00aa };
								HBITMAP hPattern;
								hPattern=CreateBitmap(8, 8, 1, 1, PatternPixel);
								LOGBRUSH logBrush;

								logBrush.lbStyle = BS_PATTERN;
								logBrush.lbHatch = (long)hPattern;
								hBrush=CreateBrushIndirect(&logBrush);
								SetBrushOrgEx(tRedrawInfo.hdc,tRedrawInfo.rc.right%8, tRedrawInfo.rc.top%8,NULL);
								SetBkColor(tRedrawInfo.hdc,clrDrawColor);
								SetTextColor(tRedrawInfo.hdc,ColorAdjustLuma(clrDrawColor,500));								
							}
							else
								hBrush=CreateSolidBrush(clrDrawColor);

							SelectObject(tRedrawInfo.hdc,hBrush);

							//Draw the thumb
							hPen=CreatePen(PS_SOLID,1,ColorAdjustLuma(clrDrawColor,-333));
							SelectObject(tRedrawInfo.hdc,hPen);
							RoundRect(tRedrawInfo.hdc,tRedrawInfo.rc.left,tRedrawInfo.rc.top,tRedrawInfo.rc.right,tRedrawInfo.rc.bottom,2,2);
							DeleteObject(hPen);

							//give some 3D look for the thumb
							hPen=CreatePen(PS_SOLID,1,ColorAdjustLuma(clrDrawColor,400));
							SelectObject(tRedrawInfo.hdc,hPen);
							MoveToEx(tRedrawInfo.hdc,tRedrawInfo.rc.left,tRedrawInfo.rc.bottom-2,NULL);
							LineTo(tRedrawInfo.hdc,tRedrawInfo.rc.left,tRedrawInfo.rc.top);
							MoveToEx(tRedrawInfo.hdc,tRedrawInfo.rc.left+1,tRedrawInfo.rc.top,NULL);
							LineTo(tRedrawInfo.hdc,tRedrawInfo.rc.right-1,tRedrawInfo.rc.top);

							//clean up and return
							RestoreDC(tRedrawInfo.hdc,iSaveDCState);
							DeleteObject(hPen);
							DeleteObject(hBrush);
							SetWindowLong(hwndDlg, DWL_MSGRESULT, CDRF_SKIPDEFAULT ); 
							return TRUE;
						}
						else
						{
							SetWindowLong(hwndDlg, DWL_MSGRESULT, CDRF_DODEFAULT); 
							return FALSE;
						}
					}
				}
			}
			break;
		}
	}

return FALSE;
}