void CRichEditDlg::OnPaint(HDC hPaintDc) { CSysUnit::SetWindowToTransparence(m_hWnd, true); CRect WndRect = this->GetClientRect(); m_BmpDc.Create(WndRect.Width(), WndRect.Height()); HDC hMemoryDC = m_BmpDc.GetSafeHdc(); HBITMAP hMemoryBitmap = m_BmpDc.GetBmpHandle(); if (hMemoryDC != NULL && hMemoryBitmap != NULL) { Graphics DoGrap(hMemoryDC); SolidBrush FillBrush(Color(255, 0, 255, 255)); DoGrap.FillRectangle(&FillBrush, 0, 0, WndRect.Width(), WndRect.Height()); ////////////////////////////////////////////////////////////////////////// WndRect = this->GetWindowRect(); CUiMethod::GetScreenBitmap(hMemoryDC, WndRect); // GDI 数据 // m_GaussB.ImageGaussBlur((BYTE *)m_BmpDc.GetBits(), m_BmpDc.GetDcSize().cx, m_BmpDc.GetDcSize().cy, 6, 30, 6, 6); // GDI+ 数据 Bitmap *ptBmp = Bitmap::FromHBITMAP(hMemoryBitmap, NULL); BitmapData LockedBmpData; ptBmp->LockBits(Rect(0, 0, m_BmpDc.GetDcSize().cx, m_BmpDc.GetDcSize().cy), ImageLockModeRead | ImageLockModeWrite, PixelFormat32bppARGB, &LockedBmpData); m_GaussB.ImageGaussBlur((BYTE *)LockedBmpData.Scan0, m_BmpDc.GetDcSize().cx, m_BmpDc.GetDcSize().cy, 6, 30, 6, 6); ptBmp->UnlockBits(&LockedBmpData); DoGrap.DrawImage(ptBmp, PointF(0, 0)); delete ptBmp; ////////////////////////////////////////////////////////////////////////// // 开始画图 m_pUiManager->OnPaint(hMemoryDC, WndRect); WndRect = this->GetClientRect(); DrawFetionBkgndLine(hMemoryDC, WndRect); DrawGlassLine(hMemoryDC, m_GlassRect); { WndRect = this->GetWindowRect(); POINT ptWinPos = {WndRect.left, WndRect.top}; POINT ptSrc = {0, 0}; SIZE sizeWindow = {WndRect.Width(), WndRect.Height()}; ::UpdateLayeredWindow(m_hWnd, hPaintDc, &ptWinPos, &sizeWindow, hMemoryDC, &ptSrc, 0, &m_Blend, ULW_ALPHA); } { // CSysUnit::SetWindowToTransparence(m_hWnd, false); // ::BitBlt(hPaintDc, 0, 0, WndRect.Width(), WndRect.Height(), // hMemoryDC, 0, 0, SRCCOPY); } } }
void CBfDrawButton::DrawButton(Color OutR, Color UpBegin, Color UpEnd, Color DownBegin, Color DownEnd, Color BRColor, Color SRColor, COLORREF PtColor) { CRect WndRect = m_WndRect; // 填充背景色 SolidBrush FillBrush(Color(255, 255, 255)); m_pDoGrap->FillRectangle(&FillBrush, WndRect.left, WndRect.top, WndRect.Width(), WndRect.Height()); // 按钮外圈 Pen OutLine(OutR); CRect OutRect(WndRect); OutRect.right--; OutRect.bottom--; RectF GRt = CUiMethod::CRect2RectF(OutRect); m_pDoGrap->DrawRectangle(&OutLine, GRt); // 上半部分高光 CRect UpHRect(WndRect); UpHRect.left += 2; UpHRect.top += 2; UpHRect.right -= 2; UpHRect.bottom = (WndRect.Height() / 2) + WndRect.top; Point Pt1 = Point(UpHRect.left, UpHRect.top - 1), Pt2 = Point(UpHRect.left, UpHRect.bottom); LinearGradientBrush lgBrush1(Pt1, Pt2, UpBegin, UpEnd); m_pDoGrap->FillRectangle(&lgBrush1, UpHRect.left, UpHRect.top, UpHRect.Width(), UpHRect.Height()); // 下半部分高光 CRect DownHRect(WndRect); DownHRect.top = UpHRect.bottom; DownHRect.left += 2; DownHRect.right -= 2; DownHRect.bottom -= 2; Pt1 = Point(DownHRect.left, DownHRect.top - 1); Pt2 = Point(DownHRect.left, DownHRect.bottom); LinearGradientBrush lgBrush2(Pt1, Pt2, DownBegin, DownEnd); m_pDoGrap->FillRectangle(&lgBrush2, DownHRect.left, DownHRect.top, DownHRect.Width(), DownHRect.Height()); // 四角高光 Draw4Corner(BRColor, SRColor, PtColor); // 画焦点 DrawFocus(); // 文字 DrawBtnText(); }
void QGraph::DrawCurve(int nIndex, QPainter &painter) { painter.save(); static double scaley; static int i, ptside; static QPoint From, To, Min, Max; static QRect rViewRect; ptside = 2; CCurve* pCurve = GetCurve(nIndex); scaley = m_scaley; QBrush FillBrush(m_BkColor); painter.setBrush(FillBrush); QPen CurvePen(pCurve->GetColor()); CurvePen.setStyle(GetStyle(pCurve->GetStyle())); CurvePen.setWidth((int)pCurve->GetWidth()); painter.setPen(CurvePen); Min.setX(int(xmin/m_scalex) +m_ptoffset.x()); Min.setY(int(ymin/scaley) +m_ptoffset.y()); Max.setX(int(xmax/m_scalex) +m_ptoffset.x()); Max.setY(int(ymax/scaley) +m_ptoffset.y()); rViewRect.setTopLeft(Min); rViewRect.setBottomRight(Max); if(pCurve->n>=1) { From.setX(int(pCurve->x[0]/m_scalex+m_ptoffset.x())); From.setY(int(pCurve->y[0]/scaley +m_ptoffset.y())); if(pCurve->IsVisible()) { for (i=1; i<pCurve->n;i++) { To.setX(int(pCurve->x[i]/m_scalex+m_ptoffset.x())); To.setY(int(pCurve->y[i]/scaley +m_ptoffset.y())); painter.drawLine(From, To); From = To; } } if(pCurve->PointsVisible()) { for (i=0; i<pCurve->n;i++) { if(pCurve->GetSelected() !=i) painter.drawRect(int(pCurve->x[i]/m_scalex+m_ptoffset.x())-ptside, int(pCurve->y[i]/ scaley+m_ptoffset.y())-ptside, 2*ptside,2*ptside); } } } if(m_bHighlightPoint) { int point = pCurve->GetSelected(); if(point>=0) { //highlight QColor HighColor(0,40, 150); CurvePen.setWidth((int)pCurve->GetWidth()); CurvePen.setColor(HighColor); painter.setPen(CurvePen); To.setX(int(pCurve->x[point]/m_scalex+m_ptoffset.x())); To.setY(int(pCurve->y[point]/scaley +m_ptoffset.y())); painter.drawRect(To.x()-ptside-1,To.y()-ptside-1, 2*(ptside+1),2*(ptside+1)); } } painter.restore(); }
void CLLTDlg::UpdateView(double Alpha) { CClientDC dc(this); // device context for painting CDC dcMem; dcMem.CreateCompatibleDC(&dc); dcMem.SetBkMode(TRANSPARENT); CRect dcMemRect(0,0,m_IterRect.Width(), m_IterRect.Height()); CBitmap bmb; bmb.CreateCompatibleBitmap(&dc,m_IterRect.Width(), m_IterRect.Height()); CBitmap *pOldBitmap = dcMem.SelectObject(&bmb); CBrush FillBrush(GetSysColor(COLOR_3DFACE)); dcMem.FillRect(&dcMemRect,&FillBrush); CRect BltRect(0,0,m_IterRect.Width(), m_IterRect.Height()); m_IterGraph.DrawGraph(&dcMem, &BltRect,false); dcMem.SetTextAlign(TA_LEFT); if(IsBlackAndWhite()) dcMem.SetTextColor(0); else dcMem.SetTextColor(RGB(150,150,150)); CFont TFont; TFont.CreatePointFont(85, "Symbol"); CFont* pOldFont = dcMem.SelectObject(&TFont); dcMem.TextOut(50,35,"(|Da|)"); CFont MFont; MFont.CreatePointFont(85, "Arial"); dcMem.SelectObject(&MFont); CString strong; strong.Format("max = %.4f", m_pIterCurve->y[m_pIterCurve->n-1]); dcMem.TextOut(80,35,strong); CFont CvFont; CvFont.CreateFont(18,0,0,0,FW_BOLD,FALSE,FALSE,0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_SWISS+VARIABLE_PITCH, "Arial"); dcMem.SelectObject(&CvFont); dcMem.SetBkMode(TRANSPARENT); CString Title; if(!m_bType4){ Title.Format("Alpha = %.2f°", Alpha); } else{ Title.Format(" Iterations for QInf = %.2f m/s", Alpha); } dcMem.TextOut(200,5,Title); if(m_State ==1){ if(IsBlackAndWhite()){ dcMem.SetTextColor(0); } else{ dcMem.SetTextColor(RGB(0,150,0)); } dcMem.TextOut(200,35,"CONVERGED !"); } else if (m_State ==2){ if(IsBlackAndWhite()) dcMem.SetTextColor(0); else dcMem.SetTextColor(RGB(255,0,0)); dcMem.TextOut(200,35,"UNCONVERGED..."); } dc.BitBlt(m_IterRect.left, m_IterRect.top, m_IterRect.Width(), m_IterRect.Height(), &dcMem,0, 0, SRCCOPY); dcMem.SelectObject(pOldFont); dcMem.SelectObject(pOldBitmap); bmb.DeleteObject(); CvFont.DeleteObject(); TFont.DeleteObject(); MFont.DeleteObject(); FillBrush.DeleteObject(); }
void CXInvClrDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) { CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC); if (!pDC) return; int nSavedDC = pDC->SaveDC(); if(nIDCtl==IDC_SPLINESTYLE) { LOGBRUSH lb; lb.lbStyle = BS_SOLID; lb.lbColor = RGB(100,100,100); CPen DotPen(PS_GEOMETRIC | PS_DOT, 1, &lb); CPen *pOldPen = pDC->SelectObject(&DotPen); CBrush FillBrush(GetSysColor(COLOR_3DFACE)); CBrush* pOldBrush = pDC->SelectObject(&FillBrush); CRect SRect ; GetDlgItem(IDC_SPLINESTYLE)->GetClientRect(&SRect); SRect.DeflateRect(2,2,2,2); pDC->Rectangle(&SRect); lb.lbStyle = BS_SOLID; lb.lbColor = m_SplineClr; CPen CurvePen(PS_GEOMETRIC | m_SplineStyle, GetPenWidth(m_SplineWidth,false), &lb); pDC->SelectObject(&CurvePen); pDC->MoveTo(5,8); pDC->LineTo(SRect.right-5,8); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); pDC->RestoreDC(nSavedDC); } if(nIDCtl==IDC_REFLECTEDSTYLE) { LOGBRUSH lb; lb.lbStyle = BS_SOLID; lb.lbColor = RGB(100,100,100); CPen DotPen(PS_GEOMETRIC | PS_DOT, 1, &lb); CPen *pOldPen = pDC->SelectObject(&DotPen); CBrush FillBrush(GetSysColor(COLOR_3DFACE)); CBrush* pOldBrush = pDC->SelectObject(&FillBrush); CRect SRect ; GetDlgItem(IDC_REFLECTEDSTYLE)->GetClientRect(&SRect); SRect.DeflateRect(2,2,2,2); pDC->Rectangle(&SRect); lb.lbStyle = BS_SOLID; lb.lbColor = m_ReflectedClr; CPen CurvePen(PS_GEOMETRIC | m_ReflectedStyle, GetPenWidth(m_ReflectedWidth,false), &lb); pDC->SelectObject(&CurvePen); pDC->MoveTo(5,8); pDC->LineTo(SRect.right-5,8); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); pDC->RestoreDC(nSavedDC); } else if(nIDCtl==IDC_MODFOIL) { LOGBRUSH lb; lb.lbStyle = BS_SOLID; lb.lbColor = RGB(100,100,100); CPen DotPen(PS_GEOMETRIC | PS_DOT, 1, &lb); CPen *pOldPen = pDC->SelectObject(&DotPen); CBrush FillBrush(GetSysColor(COLOR_3DFACE)); CBrush* pOldBrush = pDC->SelectObject(&FillBrush); CRect SRect ; GetDlgItem(IDC_MODFOIL)->GetClientRect(&SRect); SRect.DeflateRect(2,2,2,2); pDC->Rectangle(&SRect); lb.lbStyle = BS_SOLID; lb.lbColor = m_ModFoilClr; CPen CurvePen(PS_GEOMETRIC | m_ModFoilStyle, GetPenWidth(m_ModFoilWidth,false), &lb); pDC->SelectObject(&CurvePen); pDC->MoveTo(5,8); pDC->LineTo(SRect.right-5,8); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); pDC->RestoreDC(nSavedDC); } else if(nIDCtl==IDC_REFFOIL) { LOGBRUSH lb; lb.lbStyle = BS_SOLID; lb.lbColor = RGB(100,100,100); CPen DotPen(PS_GEOMETRIC | PS_DOT, 1, &lb); CPen *pOldPen = pDC->SelectObject(&DotPen); CBrush FillBrush(GetSysColor(COLOR_3DFACE)); CBrush* pOldBrush = pDC->SelectObject(&FillBrush); CRect SRect ; GetDlgItem(IDC_REFFOIL)->GetClientRect(&SRect); SRect.DeflateRect(2,2,2,2); pDC->Rectangle(&SRect); lb.lbStyle = BS_SOLID; lb.lbColor = m_RefFoilClr; CPen CurvePen(PS_GEOMETRIC | m_RefFoilStyle, GetPenWidth(m_RefFoilWidth,false), &lb); pDC->SelectObject(&CurvePen); pDC->MoveTo(5,8); pDC->LineTo(SRect.right-5,8); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); pDC->RestoreDC(nSavedDC); } }
void CBodyGridDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) { CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC); if (!pDC) return; // int nSavedDC = dc.SaveDC(); switch (nIDCtl) { case IDC_GRIDSTYLE: { LOGBRUSH lb; lb.lbStyle = BS_SOLID; lb.lbColor = RGB(100,100,100); CPen DotPen(PS_GEOMETRIC | PS_DOT, 1, &lb); CPen *pOldPen = pDC->SelectObject(&DotPen); CBrush FillBrush(GetSysColor(COLOR_3DFACE)); CBrush* pOldBrush = pDC->SelectObject(&FillBrush); CRect SRect ; GetDlgItem(IDC_GRIDSTYLE)->GetClientRect(&SRect); SRect.DeflateRect(2,2,2,2); pDC->Rectangle(&SRect); lb.lbStyle = BS_SOLID; lb.lbColor = m_Color; CPen CurvePen(PS_GEOMETRIC | m_Style, GetPenWidth(m_Width,false), &lb); pDC->SelectObject(&CurvePen); pDC->MoveTo(5,8); pDC->LineTo(SRect.right-5,8); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); break; } case IDC_MINSTYLE:{ LOGBRUSH lb; lb.lbStyle = BS_SOLID; lb.lbColor = RGB(100,100,100); CPen DotPen(PS_GEOMETRIC | PS_DOT, 1, &lb); CPen *pOldPen = pDC->SelectObject(&DotPen); CBrush FillBrush(GetSysColor(COLOR_3DFACE)); CBrush* pOldBrush = pDC->SelectObject(&FillBrush); CRect SRect ; GetDlgItem(IDC_MINSTYLE)->GetClientRect(&SRect); SRect.DeflateRect(2,2,2,2); pDC->Rectangle(&SRect); lb.lbStyle = BS_SOLID; lb.lbColor = m_MinColor; CPen CurvePen(PS_GEOMETRIC | m_MinStyle, GetPenWidth(m_MinWidth,false), &lb); pDC->SelectObject(&CurvePen); pDC->MoveTo(5,8); pDC->LineTo(SRect.right-5,8); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); break; } case IDC_GRIDSTYLE2:{ LOGBRUSH lb; lb.lbStyle = BS_SOLID; lb.lbColor = RGB(100,100,100); CPen DotPen(PS_GEOMETRIC | PS_DOT, 1, &lb); CPen *pOldPen = pDC->SelectObject(&DotPen); CBrush FillBrush(GetSysColor(COLOR_3DFACE)); CBrush* pOldBrush = pDC->SelectObject(&FillBrush); CRect SRect ; GetDlgItem(IDC_GRIDSTYLE2)->GetClientRect(&SRect); SRect.DeflateRect(2,2,2,2); pDC->Rectangle(&SRect); lb.lbStyle = BS_SOLID; lb.lbColor = m_Color2; CPen CurvePen(PS_GEOMETRIC | m_Style2, GetPenWidth(m_Width2,false), &lb); pDC->SelectObject(&CurvePen); pDC->MoveTo(5,8); pDC->LineTo(SRect.right-5,8); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); break; } case IDC_MINSTYLE2:{ LOGBRUSH lb; lb.lbStyle = BS_SOLID; lb.lbColor = RGB(100,100,100); CPen DotPen(PS_GEOMETRIC | PS_DOT, 1, &lb); CPen *pOldPen = pDC->SelectObject(&DotPen); CBrush FillBrush(GetSysColor(COLOR_3DFACE)); CBrush* pOldBrush = pDC->SelectObject(&FillBrush); CRect SRect ; GetDlgItem(IDC_MINSTYLE2)->GetClientRect(&SRect); SRect.DeflateRect(2,2,2,2); pDC->Rectangle(&SRect); lb.lbStyle = BS_SOLID; lb.lbColor = m_MinColor2; CPen CurvePen(PS_GEOMETRIC | m_MinStyle2, GetPenWidth(m_MinWidth2,false), &lb); pDC->SelectObject(&CurvePen); pDC->MoveTo(5,8); pDC->LineTo(SRect.right-5,8); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); break; } } }
void CViscDlg::UpdateView() { CClientDC dc(this); // device context for painting int btnHeight = 50; CRect CltRect; GetClientRect(&CltRect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); dcMem.SetBkMode(TRANSPARENT); CRect dcMemRect(0,0,CltRect.Width(), CltRect.Height()-btnHeight); CBitmap bmb; bmb.CreateCompatibleBitmap(&dc,CltRect.Width(), CltRect.Height()-btnHeight); CBitmap * pOldBmp = dcMem.SelectObject(&bmb); CBrush FillBrush(GetSysColor(COLOR_3DFACE)); dcMem.FillRect(&dcMemRect,&FillBrush); m_RmsGraph.DrawGraph(&dcMem, &m_ViscRect,false); m_RmsGraph.DrawLegend(&dcMem, false, m_LegendPlace); CFont CvFont; CvFont.CreateFont(18,0,0,0,FW_BOLD,FALSE,FALSE,0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_SWISS+VARIABLE_PITCH, "Arial"); CFont* pOldFont = dcMem.SelectObject(&CvFont); dcMem.SetTextAlign(TA_LEFT); dcMem.SetBkMode(TRANSPARENT); CString Title; dcMem.SetTextColor(RGB(0,0,0)); if(!m_bType4){ if (m_bAlpha) Title.Format("Alfa = %7.2f°", m_pXFoil->alfa*180.0/3.141592654); else Title.Format("Cl = %7.2f", m_pXFoil->clspec); } else{ ReynoldsFormat(Title, m_pXFoil->reinf); Title = "Re = " + Title; } dcMem.TextOut(150,5,Title); if(m_pXFoil->lvconv){ dcMem.SetTextColor(RGB(0,150,0)); dcMem.TextOut(160,45,"CONVERGED !"); } else { if(m_pIterThread->m_Iterations>=m_IterLim && !m_pXFoil->lvconv){ dcMem.SetTextColor(RGB(255,0,0)); dcMem.TextOut(160,45,"UNCONVERGED..."); } } dc.BitBlt(0, CltRect.top, CltRect.Width(), m_ViscRect.Height()+42, &dcMem,0, 0, SRCCOPY); dcMem.SelectObject(pOldFont); dcMem.SelectObject(pOldBmp); bmb.DeleteObject(); CvFont.DeleteObject(); FillBrush.DeleteObject(); }
void CGraphOptions::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) { CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC); if (!pDC) return; int nSavedDC = pDC->SaveDC(); if(nIDCtl==IDC_AXISSTYLE){ LOGBRUSH lb; lb.lbStyle = BS_SOLID; lb.lbColor = RGB(100,100,100); CPen DotPen(PS_GEOMETRIC | PS_DOT, 1, &lb); CPen *pOldPen = pDC->SelectObject(&DotPen); CBrush FillBrush(GetSysColor(COLOR_3DFACE)); CBrush* pOldBrush = pDC->SelectObject(&FillBrush); CRect SRect ; GetDlgItem(IDC_AXISSTYLE)->GetClientRect(&SRect); SRect.DeflateRect(2,2,2,2); pDC->Rectangle(&SRect); lb.lbStyle = BS_SOLID; lb.lbColor = m_crColor; CPen CurvePen(PS_GEOMETRIC | m_nStyle, GetPenWidth(m_nWidth,false), &lb); pDC->SelectObject(&CurvePen); pDC->MoveTo(5,8); pDC->LineTo(SRect.right-5,8); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); } else if(nIDCtl==IDC_XMAINSTYLE){ LOGBRUSH lb; lb.lbStyle = BS_SOLID; lb.lbColor = RGB(100,100,100); CPen DotPen(PS_GEOMETRIC | PS_DOT, 1, &lb); CPen *pOldPen = pDC->SelectObject(&DotPen); CBrush FillBrush(GetSysColor(COLOR_3DFACE)); CBrush* pOldBrush = pDC->SelectObject(&FillBrush); CRect SRect ; GetDlgItem(IDC_XMAINSTYLE)->GetClientRect(&SRect); SRect.DeflateRect(2,2,2,2); pDC->Rectangle(&SRect); lb.lbStyle = BS_SOLID; lb.lbColor = m_XMClr; CPen CurvePen(PS_GEOMETRIC | m_XMStyle, GetPenWidth(m_XMWidth,false), &lb); pDC->SelectObject(&CurvePen); pDC->MoveTo(5,8); pDC->LineTo(SRect.right-5,8); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); } else if(nIDCtl==IDC_YMAINSTYLE){ LOGBRUSH lb; lb.lbStyle = BS_SOLID; lb.lbColor = RGB(100,100,100); CPen DotPen(PS_GEOMETRIC | PS_DOT, 1, &lb); CPen *pOldPen = pDC->SelectObject(&DotPen); CBrush FillBrush(GetSysColor(COLOR_3DFACE)); CBrush* pOldBrush = pDC->SelectObject(&FillBrush); CRect SRect ; GetDlgItem(IDC_YMAINSTYLE)->GetClientRect(&SRect); SRect.DeflateRect(2,2,2,2); pDC->Rectangle(&SRect); lb.lbStyle = BS_SOLID; lb.lbColor = m_YMClr; CPen CurvePen(PS_GEOMETRIC | m_YMStyle, GetPenWidth(m_YMWidth,false), &lb); pDC->SelectObject(&CurvePen); pDC->MoveTo(5,8); pDC->LineTo(SRect.right-5,8); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); } else if(nIDCtl==IDC_XMINSTYLE){ LOGBRUSH lb; lb.lbStyle = BS_SOLID; lb.lbColor = RGB(100,100,100); CPen DotPen(PS_GEOMETRIC | PS_DOT, 1, &lb); CPen *pOldPen = pDC->SelectObject(&DotPen); CBrush FillBrush(GetSysColor(COLOR_3DFACE)); CBrush* pOldBrush = pDC->SelectObject(&FillBrush); CRect SRect ; GetDlgItem(IDC_XMINSTYLE)->GetClientRect(&SRect); SRect.DeflateRect(2,2,2,2); pDC->Rectangle(&SRect); lb.lbStyle = BS_SOLID; lb.lbColor = m_XMinClr; CPen CurvePen(PS_GEOMETRIC | m_XMinStyle, GetPenWidth(m_XMinWidth,false), &lb); pDC->SelectObject(&CurvePen); pDC->MoveTo(5,8); pDC->LineTo(SRect.right-5,8); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); } else if(nIDCtl==IDC_YMINSTYLE){ LOGBRUSH lb; lb.lbStyle = BS_SOLID; lb.lbColor = RGB(100,100,100); CPen DotPen(PS_GEOMETRIC | PS_DOT, 1, &lb); CPen *pOldPen = pDC->SelectObject(&DotPen); CBrush FillBrush(GetSysColor(COLOR_3DFACE)); CBrush* pOldBrush = pDC->SelectObject(&FillBrush); CRect SRect ; GetDlgItem(IDC_YMINSTYLE)->GetClientRect(&SRect); SRect.DeflateRect(2,2,2,2); pDC->Rectangle(&SRect); lb.lbStyle = BS_SOLID; lb.lbColor = m_YMinClr; CPen CurvePen(PS_GEOMETRIC | m_YMinStyle, GetPenWidth(m_YMinWidth,false), &lb); pDC->SelectObject(&CurvePen); pDC->MoveTo(5,8); pDC->LineTo(SRect.right-5,8); pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); } pDC->RestoreDC(nSavedDC); // CDialog::OnDrawItem(nIDCt, lpDrawItemStruct); }