这篇教程C++ GetGValue函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中GetGValue函数的典型用法代码示例。如果您正苦于以下问题:C++ GetGValue函数的具体用法?C++ GetGValue怎么用?C++ GetGValue使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了GetGValue函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: RGBtoHLSvoid CPalGroup::SortPal(int nIndex, int nStartIndex, int nSortFlag){ if(!rgPalettes[nIndex].bAvail) { return; //Most likeley wont happen } double * pHSLArray; int nPalSz = rgPalettes[nIndex].uPalSz; if(rgPalettes[nIndex].pSortTable) { delete [] rgPalettes[nIndex].pSortTable; } pHSLArray = new double[nPalSz * 3]; rgPalettes[nIndex].pSortTable = new UINT16[nPalSz]; for(int i = 0; i < nPalSz; i++) { rgPalettes[nIndex].pSortTable[i] = (UINT16)i; RGBtoHLS(rgPalettes[nIndex].pPal[i], &pHSLArray[i], &pHSLArray[i + nPalSz], &pHSLArray[i + (nPalSz*2)]); //pHSLArray[i] = (double)(rgPalettes[nIndex].pPal[i] & 0x00FFFFFF); } //Go through array again for(int i = 0; i < nPalSz; i++) { //pHSLArray[i] = pHSLArray[i] * pHSLArray[i + nPalSz] / pHSLArray[i + (nPalSz*2)]; double fpPage; double fpPageSz = 20.0f; double fpPageAmt; pHSLArray[i] *= 360.0f; fpPageAmt = (double)((int)(pHSLArray[i] / fpPageSz)); //pHSLArray[i] = fpPageSz * fpPageAmt; pHSLArray[i] += fpPageSz;// fpPage = 4096.0 * fpPageAmt; //pHSLArray[i] /= fabs((pHSLArray[i + nPalSz * 2])-(pHSLArray[i + nPalSz])); //pHSLArray[i] /= pHSLArray[i + nPalSz] + ((pHSLArray[i + (nPalSz * 2)]) / 3.0); //pHSLArray[i] /= (double)(rgPalettes[nIndex].pPal[i] & 0x00FFFFFF); //if(i && pHSLArray[i -1] == pHSLArray[i]) //{ // pHSLArray[i] += pHSLArray[i + nPalSz]; //} COLORREF crCol = rgPalettes[nIndex].pPal[i]; double nR = (double)GetRValue(rgPalettes[nIndex].pPal[i])/255.0, nG = (double)GetGValue(rgPalettes[nIndex].pPal[i])/255.0, nB = (double)GetBValue(rgPalettes[nIndex].pPal[i])/255.0; double fpX, fpY, fpZ; ccRGBtoXYZ(nR, nG, nB, &fpX, &fpY, &fpZ); //pHSLArray[i] /= sqrt(sq(fpX) + sq(fpY) + sq(fpZ)); pHSLArray[i] /= sqrt(sq(nR - 0) + sq(nG - 0) + sq(nB- 0)); //pHSLArray[i] /= // pHSLArray[i + nPalSz] + ((pHSLArray[i + (nPalSz * 2)]) / 0.5) + sqrt(sq(nR - 0) + sq(nG - 0) + sq(nB- 0)) + fpX*4; pHSLArray[i] += fpPage; } /* */ //for(int i = 0; i < nPalSz; i++) //{ // COLORREF crCol = rgPalettes[nIndex].pPal[i]; // double nR = (double)GetRValue(rgPalettes[nIndex].pPal[i]), // nG = (double)GetGValue(rgPalettes[nIndex].pPal[i]), // nB = (double)GetBValue(rgPalettes[nIndex].pPal[i]); // // pHSLArray[i] /= // sqrt(sq(nR*0.3 - 0) + sq(nG*0.6 - 0) + sq(nB*0.1 - 0)); // //} //Sort again if((nSortFlag & SORT_HUE) == SORT_HUE) { for(int i = 0; i < 10; i++) { ShellSort( &pHSLArray[nStartIndex], //.........这里部分代码省略.........
开发者ID:DrewDos,项目名称:palmod,代码行数:101,
示例2: AdjustBrightnessVOIDAdjustBrightness(HBITMAP hOrigBitmap, HBITMAP hNewBitmap, HWND hwnd, HDC hdcMem, INT RedVal, INT GreenVal, INT BlueVal){ BITMAPINFO bi; BITMAP bitmap; BOOL bRes; DWORD Count = 0; INT i, j; PBYTE pBits; RECT rc; GetObject(hNewBitmap, sizeof(BITMAP), &bitmap); /* Bitmap header */ bi.bmiHeader.biSize = sizeof(bi.bmiHeader); bi.bmiHeader.biWidth = bitmap.bmWidth; bi.bmiHeader.biHeight = bitmap.bmHeight; bi.bmiHeader.biPlanes = 1; bi.bmiHeader.biBitCount = 32; bi.bmiHeader.biCompression = BI_RGB; bi.bmiHeader.biSizeImage = bitmap.bmWidth * bitmap.bmHeight * 4; bi.bmiHeader.biClrUsed = 0; bi.bmiHeader.biClrImportant = 0; /* Buffer */ pBits = (PBYTE)HeapAlloc(ProcessHeap, 0, bitmap.bmWidth * bitmap.bmHeight * 4); if (!pBits) return; /* get the bits from the original bitmap */ bRes = GetDIBits(hdcMem, hOrigBitmap, 0, bitmap.bmHeight, pBits, &bi, DIB_RGB_COLORS); for (i = 0; i < bitmap.bmHeight; i++) { for (j = 0; j < bitmap.bmWidth; j++) { DWORD Val = 0; INT b, g, r; CopyMemory(&Val, &pBits[Count], 4); /* Get pixels in reverse order */ b = GetRValue(Val); g = GetGValue(Val); r = GetBValue(Val); /* Red */ r += RedVal; if (r > 255) r = 255; else if (r < 0) r = 0; /* Green */ g += GreenVal; if (g > 255) g = 255; else if (g < 0) g = 0; /* Blue */ b += BlueVal; if (b > 255) b = 255; else if (b < 0) b = 0; /* Store in reverse order */ Val = RGB(b, g, r); CopyMemory(&pBits[Count], &Val, 4); /* RGB color take 4 bytes.The high-order byte must be zero */ Count += 4; } } /* Set the new pixel bits */ SetDIBits(hdcMem, hNewBitmap, 0, bRes, pBits, &bi, DIB_RGB_COLORS); HeapFree(ProcessHeap,//.........这里部分代码省略.........
开发者ID:Moteesh,项目名称:reactos,代码行数:101,
示例3: GetCursorPos//属性菜单void CGuiderView::OnAttribute(){ // TODO: 在此添加命令处理程序代码 CPoint p; if(App_Veriable::RelativeContextMenuPos.x==-1&&App_Veriable::RelativeContextMenuPos.y==-1)//没有菜单 { //快捷键 GetCursorPos(&p); this->ScreenToClient(&p); } else//有菜单 { p=App_Veriable::RelativeContextMenuPos; } int sp=sitelist.OnSite(p.x,p.y);//获取地点对象 Route* rp=routelist.OnRoute(p.x,p.y);//获取路径对象 if(sp!=0)//优先选中地点 { Site * s=sitelist.GetOfID(sp); dlgDySiteAttr.DynamicSiteID=s->ID; CString s0; s0.Format(L"(%d,%d)",s->Position.x,s->Position.y); dlgDySiteAttr.DynamicSitePosition=s0; switch(s->Style) { case'C':s0.Format(L"圆");break; case'T':s0.Format(L"三角形");break; case'R':s0.Format(L"矩形");break; default:s0.Format(L"");break; } dlgDySiteAttr.DynamicSiteStyle=s0; dlgDySiteAttr.DynamicSiteColorR=GetRValue(s->Color); dlgDySiteAttr.DynamicSiteColorG=GetGValue(s->Color); dlgDySiteAttr.DynamicSiteColorB=GetBValue(s->Color); dlgDySiteAttr.DynamicSiteSize=s->Size; dlgDySiteAttr.DynamicSiteInfo=s->SiteInfo; dlgDySiteAttr.DoModal(); } else if(rp!=NULL) { dlgDyRouteAttr.DynamicRouteID1=rp->ID1; Site * s=sitelist.GetOfID(rp->ID1); CString s1; s1.Format(L"(%d,%d)",s->Position.x,s->Position.y); dlgDyRouteAttr.DynamicRoutePosition1=s1; dlgDyRouteAttr.DynamicRouteID2=rp->ID2; s=sitelist.GetOfID(rp->ID2); s1.Format(L"(%d,%d)",s->Position.x,s->Position.y); dlgDyRouteAttr.DynamicRoutePosition2=s1; double l=routelist.GetRouteLength(rp->ID1,rp->ID2); l*=2.287;//长度系数 s1.Format(_T("%.4f m"),l); dlgDyRouteAttr.DynamicRouteLength=s1; dlgDyRouteAttr.DynamicRouteWidth=rp->Width; dlgDyRouteAttr.DynamicRouteColorR=GetRValue(rp->Color); dlgDyRouteAttr.DynamicRouteColorG=GetGValue(rp->Color); dlgDyRouteAttr.DynamicRouteColorB=GetBValue(rp->Color); dlgDyRouteAttr.DynamicRouteInfo=rp->RouteInfo; dlgDyRouteAttr.DynamicRoutePointSize=rp->Points->size; dlgDyRouteAttr.DynamicRoutePointColorR=GetRValue(rp->Points->color); dlgDyRouteAttr.DynamicRoutePointColorG=GetGValue(rp->Points->color); dlgDyRouteAttr.DynamicRoutePointColorB=GetBValue(rp->Points->color); dlgDyRouteAttr.DoModal(); } CPoint q(-1,-1); App_Veriable::RelativeContextMenuPos=q;//还原菜单变量}
开发者ID:fanzhidongyzby,项目名称:Guider,代码行数:84,
示例4: switchINT_PTR CJabberDlgGcJoin::DlgProc(UINT msg, WPARAM wParam, LPARAM lParam){ switch (msg) { case WM_DELETEITEM: { LPDELETEITEMSTRUCT lpdis = (LPDELETEITEMSTRUCT)lParam; if (lpdis->CtlID != IDC_ROOM) break; RoomInfo *info = (RoomInfo *)lpdis->itemData; mir_free(info->line1); mir_free(info->line2); mir_free(info); } break; case WM_MEASUREITEM: { LPMEASUREITEMSTRUCT lpmis = (LPMEASUREITEMSTRUCT)lParam; if (lpmis->CtlID != IDC_ROOM) break; lpmis->itemHeight = 2 * sttTextLineHeight; if (lpmis->itemID == -1) lpmis->itemHeight = sttTextLineHeight - 1; } break; case WM_DRAWITEM: { LPDRAWITEMSTRUCT lpdis = (LPDRAWITEMSTRUCT)lParam; if (lpdis->CtlID != IDC_ROOM) break; RoomInfo *info = (RoomInfo *)SendDlgItemMessage(m_hwnd, IDC_ROOM, CB_GETITEMDATA, lpdis->itemID, 0); COLORREF clLine1, clBack; if (lpdis->itemState & ODS_SELECTED) { FillRect(lpdis->hDC, &lpdis->rcItem, GetSysColorBrush(COLOR_HIGHLIGHT)); clBack = GetSysColor(COLOR_HIGHLIGHT); clLine1 = GetSysColor(COLOR_HIGHLIGHTTEXT); } else { FillRect(lpdis->hDC, &lpdis->rcItem, GetSysColorBrush(COLOR_WINDOW)); clBack = GetSysColor(COLOR_WINDOW); clLine1 = GetSysColor(COLOR_WINDOWTEXT); } COLORREF clLine2 = RGB( GetRValue(clLine1) * 0.66 + GetRValue(clBack) * 0.34, GetGValue(clLine1) * 0.66 + GetGValue(clBack) * 0.34, GetBValue(clLine1) * 0.66 + GetBValue(clBack) * 0.34); SetBkMode(lpdis->hDC, TRANSPARENT); RECT rc = lpdis->rcItem; rc.bottom -= (rc.bottom - rc.top) / 2; rc.left += 20; SetTextColor(lpdis->hDC, clLine1); DrawText(lpdis->hDC, info->line1, -1, &rc, DT_LEFT | DT_NOPREFIX | DT_SINGLELINE | DT_VCENTER | DT_WORD_ELLIPSIS); rc = lpdis->rcItem; rc.top += (rc.bottom - rc.top) / 2; rc.left += 20; SetTextColor(lpdis->hDC, clLine2); DrawText(lpdis->hDC, info->line2, -1, &rc, DT_LEFT | DT_NOPREFIX | DT_SINGLELINE | DT_VCENTER | DT_WORD_ELLIPSIS); DrawIconEx(lpdis->hDC, lpdis->rcItem.left + 1, lpdis->rcItem.top + 1, m_proto->LoadIconEx("group"), 16, 16, 0, NULL, DI_NORMAL); switch (info->overlay) { case RoomInfo::ROOM_WAIT: DrawIconEx(lpdis->hDC, lpdis->rcItem.left + 1, lpdis->rcItem.top + 1, m_proto->LoadIconEx("disco_progress"), 16, 16, 0, NULL, DI_NORMAL); break; case RoomInfo::ROOM_FAIL: DrawIconEx(lpdis->hDC, lpdis->rcItem.left + 1, lpdis->rcItem.top + 1, m_proto->LoadIconEx("disco_fail"), 16, 16, 0, NULL, DI_NORMAL); break; case RoomInfo::ROOM_BOOKMARK: DrawIconEx(lpdis->hDC, lpdis->rcItem.left + 1, lpdis->rcItem.top + 1, m_proto->LoadIconEx("disco_ok"), 16, 16, 0, NULL, DI_NORMAL); break; } } break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_SERVER: switch (HIWORD(wParam)) { case CBN_EDITCHANGE: case CBN_SELCHANGE: { int iqid = GetWindowLongPtr(GetDlgItem(m_hwnd, IDC_ROOM), GWLP_USERDATA); if (iqid) { m_proto->m_iqManager.ExpireIq(iqid); SetWindowLongPtr(GetDlgItem(m_hwnd, IDC_ROOM), GWLP_USERDATA, 0); } SendDlgItemMessage(m_hwnd, IDC_ROOM, CB_RESETCONTENT, 0, 0); } break; } break;//.........这里部分代码省略.........
开发者ID:ybznek,项目名称:miranda-ng,代码行数:101,
示例5: GetPos//.........这里部分代码省略......... for(loop = 0; loop < loopMax; loop++) { clrRange clr; clr = colorList[loop]; // Get the good values. If not set, then entire range is good int lval = clr.lval; int hval = clr.hval; if((lval < min) || (lval > max)) lval = min; if((hval > max) || (hval < min)) hval = max; if(lval == min) { gotStartColor = TRUE; startColor = clr.strColor; } if(hval == max) { gotEndColor = TRUE; endColor = clr.endColor; } int minVal = lval - min; // offset into bitmap for this color minVal = int(double(minVal)/scale); // width (or height for vertical slider) inside bitmap for this color int widthVal = hval - lval; widthVal = int((double(widthVal)/scale) + 1.0); // For drawing a gradient, we need to know the individual RGB values int sR,eR,sG,eG,sB,eB; // start and end R, G, and B values sR = GetRValue(clr.strColor); eR = GetRValue(clr.endColor); sG = GetGValue(clr.strColor); eG = GetGValue(clr.endColor); sB = GetBValue(clr.strColor); eB = GetBValue(clr.endColor); if(GradientFill != NULL) { TRIVERTEX vert[2]; // for specifying range to gradient fill GRADIENT_RECT gRect;// Warning C4244: conversion from 'int' to 'unsigned short', possible loss of data#pragma warning (push)#pragma warning (disable : 4244) vert[0].Red = sR<<8; // expects 16-bit color values! vert[0].Green = sG<<8; vert[0].Blue = sB<<8; vert[0].Alpha = 0; // no fading/transparency vert[1].Red = eR<<8; vert[1].Green = eG<<8; vert[1].Blue = eB<<8; vert[1].Alpha = 0;#pragma warning (pop) gRect.UpperLeft = 0; gRect.LowerRight = 1; BOOL retval; if(IsVertical) // vertically oriented? { vert[0].x = 0; vert[0].y = Offset + minVal; vert[1].x = iWidth;
开发者ID:caomw,项目名称:sketch-system-with-third-party-libs,代码行数:67,
示例6: ErasedDrawvoid CPenBrushUnit::ErasedDraw(CDC *memDC, DataInfo &pDataInfo,HRGN ErasedRgn){ CPoint sPoint,ePoint,psPoint,pePoint,ptPoint; double dx,dy,xlen,ylen; double preWidth,nWidth; int count=1; int alpha; int v=0; int Red,Green,Blue; Red=GetRValue(pDataInfo.penColor); Green=GetGValue(pDataInfo.penColor); Blue=GetBValue(pDataInfo.penColor); Color colors[]={Color(10,Red,Green,Blue)}; Graphics mGraphics(memDC->m_hDC); /////////////////////////////////// Matrix matrix; Region tRgn; Region *ptRgn=tRgn.FromHRGN(ErasedRgn); mGraphics.ExcludeClip(ptRgn); matrix.Reset(); delete ptRgn; //////////////////////////////////// mGraphics.TranslateTransform(pDataInfo.CenterPoint.x,pDataInfo.CenterPoint.y); mGraphics.RotateTransform(pDataInfo.RotateAngle); mGraphics.SetSmoothingMode(SmoothingModeAntiAlias); sPoint=CaculatePoint(pDataInfo.StartPoint,pDataInfo); ePoint=CaculatePoint(pDataInfo.EndPoint,pDataInfo); xlen=ePoint.x-sPoint.x; ylen=ePoint.y-sPoint.y; preWidth=pDataInfo.AllRate[0].preWidth; alpha=pDataInfo.AllRate[0].alpha; psPoint.x=sPoint.x+xlen*pDataInfo.AllRate[0].xRate; psPoint.y=sPoint.y+ylen*pDataInfo.AllRate[0].yRate; int Size=pDataInfo.AllRate.size(); for(int Index=1;Index<Size;Index++) { pePoint.x=sPoint.x+xlen*pDataInfo.AllRate[Index].xRate; pePoint.y=sPoint.y+ylen*pDataInfo.AllRate[Index].yRate; dx=(pePoint.x-psPoint.x); dy=(pePoint.y-psPoint.y); nWidth=pDataInfo.AllRate[0].preWidth; float Angle=atan2(dy,dx)*Rate; GraphicsPath path(FillModeWinding); GraphicsPath path1,path2,path3,path4; RectF sRectF(psPoint.x,psPoint.y,0,0); sRectF.Inflate(preWidth,preWidth); RectF eRectF(pePoint.x,pePoint.y,0,0); eRectF.Inflate(nWidth,nWidth); /////////////////////////////////////////// REAL left=sRectF.GetLeft(); REAL top=sRectF.GetTop(); REAL bottom=sRectF.GetBottom(); REAL right=sRectF.GetRight(); Point pts0[]={Point((left+right)/2,top),Point((left+right)/2,bottom)}; matrix.RotateAt(Angle,PointF(psPoint.x,psPoint.y)); matrix.TransformPoints(pts0,2); Point LeftTop(pts0[0].X,pts0[0].Y); Point LeftBottom(pts0[1].X,pts0[1].Y); path1.AddArc(sRectF,270.0f,-180.0f); path1.Transform(&matrix); matrix.Reset(); top=eRectF.GetTop(); bottom=eRectF.GetBottom(); right=eRectF.GetRight(); left=eRectF.GetLeft(); Point pts1[]={Point((right+left)/2,bottom),Point((right+left)/2,top)}; matrix.RotateAt(Angle,PointF(pePoint.x,pePoint.y)); matrix.TransformPoints(pts1,2); Point RightBottom(pts1[0].X,pts1[0].Y); Point RightTop(pts1[1].X,pts1[1].Y); path3.AddArc(eRectF,90.0f,-180.0f); path3.Transform(&matrix); matrix.Reset(); Point pts[]={LeftTop,RightTop,RightBottom,LeftBottom}; /////////////////////////////////////////// path2.AddLine(LeftBottom,RightBottom); path4.AddLine(RightTop,LeftTop); path.AddPath(&path1,true); path.AddPath(&path2,true); path.AddPath(&path3,true); path.AddPath(&path4,true); SolidBrush brush(Color(255,Red,Green,Blue)); mGraphics.FillPath(&brush,&path); Pen pen(Color(255,Red,Green,Blue),1); mGraphics.DrawPath(&pen,&path); preWidth=nWidth; psPoint=pePoint; } mGraphics.ResetTransform();}
开发者ID:duiniuluantanqin,项目名称:SCT_Board,代码行数:93,
示例7: ReDrawvoid CPenBrushUnit::ReDraw(CDC* memDC,DataInfo &pDataInfo){ CPoint sPoint,ePoint,psPoint,pePoint,ptPoint; double dx,dy,xlen,ylen; double preWidth,nWidth; Matrix matrix; int count=1; int alpha; int v=0; int Red,Green,Blue; Red=GetRValue(pDataInfo.penColor); Green=GetGValue(pDataInfo.penColor); Blue=GetBValue(pDataInfo.penColor); SolidBrush brush(Color(255,Red,Green,Blue)); SolidBrush brush1(Color(200,Red,Green,Blue)); Graphics mGraphics(memDC->m_hDC); mGraphics.TranslateTransform(pDataInfo.CenterPoint.x,pDataInfo.CenterPoint.y); mGraphics.RotateTransform(pDataInfo.RotateAngle); mGraphics.SetSmoothingMode(SmoothingModeAntiAlias); mGraphics.ScaleTransform(pDataInfo.xScale,pDataInfo.yScale); /////////////////////////////////// Region tRgn; Region *ptRgn=tRgn.FromHRGN(pDataInfo.hRgn); if(ptRgn != NULL) mGraphics.ExcludeClip(ptRgn); delete ptRgn; //////////////////////////////////// int Size=pDataInfo.AllRate.size(); sPoint=CaculatePoint(pDataInfo.StartPoint,pDataInfo); ePoint=CaculatePoint(pDataInfo.EndPoint,pDataInfo); xlen=ePoint.x-sPoint.x; ylen=ePoint.y-sPoint.y; if(xlen<1) xlen=1; if(ylen<1) ylen=1; if(fwidth.size()!=0) fwidth.clear(); fwidth.insert(std::map<DWORD,float>::value_type(0,pDataInfo.AllRate[0].preWidth)); alpha=pDataInfo.AllRate[0].alpha; psPoint.x=sPoint.x+xlen*pDataInfo.AllRate[0].xRate; psPoint.y=sPoint.y+ylen*pDataInfo.AllRate[0].yRate; for(int Index=1;Index<Size;Index++) { pePoint.x=sPoint.x+xlen*pDataInfo.AllRate[Index].xRate; pePoint.y=sPoint.y+ylen*pDataInfo.AllRate[Index].yRate; if(Index==1) PushStart(psPoint,0); if(Push(psPoint,pePoint,0)) { RectF headRect; RectF tailRect; float width,dx,dy; PointF lfCenter,rtCenter; mGraphics.FillPolygon(&brush,pts,npts); mGraphics.DrawPolygon(&Pen(Color(200,Red,Green,Blue),1),pts,npts); if(npts==4) { headRect=RectF((pts[0].X+pts[3].X)/2.0f,(pts[0].Y+pts[3].Y)/2.0f,0.0f,0.0f); tailRect=RectF((pts[1].X+pts[2].X)/2.0f,(pts[1].Y+pts[2].Y)/2.0f,0.0f,0.0f); dx=pts[3].X-pts[0].X; dy=pts[3].Y-pts[0].Y; width=sqrt(dx*dx+dy*dy)/2.0f+0.5f; headRect.Inflate(width,width); dx=pts[2].X-pts[1].X; dy=pts[2].Y-pts[1].Y; width=sqrt(dx*dx+dy*dy)/2.0f+0.5f; tailRect.Inflate(width,width); } else { headRect=RectF((pts[0].X+pts[9].X)/2.0f,(pts[0].Y+pts[9].Y)/2.0f,0.0f,0.0f); tailRect=RectF((pts[4].X+pts[5].X)/2.0f,(pts[4].Y+pts[5].Y)/2.0f,0.0f,0.0f); dx=pts[9].X-pts[0].X; dy=pts[9].Y-pts[0].Y; width=sqrt(dx*dx+dy*dy)/2.0f+0.5f; headRect.Inflate(width,width); dx=pts[5].X-pts[4].X; dy=pts[5].Y-pts[4].Y; width=sqrt(dx*dx+dy*dy)/2.0f+0.5f; tailRect.Inflate(width,width); } mGraphics.FillEllipse(&brush1,headRect); mGraphics.FillEllipse(&brush1,tailRect); //preWidth=nWidth; psPoint=pePoint; } } mGraphics.ResetTransform();}
开发者ID:duiniuluantanqin,项目名称:SCT_Board,代码行数:94,
示例8: UpdateData//按照等距自动进行分段void CRangeRenderPage::OnBnClickedBtnAutoSetrange(){ UpdateData(TRUE); if(m_Breaknum<=0 || m_renderField.IsEmpty()) { return; } double dmin=0.0,dmax =0.0; //获得字段的最大最小值 GetMinMaxValue(dynamic_cast<Geodatabase::IFeatureClass*>(m_pLayer->GetDataObject().get()), m_renderField,&dmax,&dmin); m_Classes.clear(); m_list.DeleteAll(); COLORREF beginColor =m_ctlColorRamp.get_curStartColor(); COLORREF endColor =m_ctlColorRamp.get_curEndColor(); RangeItem item; Display::ISymbolPtr pDefaultSymbol =CreateDefaultSymbol(dynamic_cast<Geodatabase::IFeatureClass*>(m_pLayer->GetDataObject().get())); Display::ISymbolPtr pSymbol; //如果最大最小值相等,则只分一个段 if(dmin ==dmax) { item.max =dmax; item.min =dmin; pSymbol =pDefaultSymbol->Clone(); pSymbol->SetColor(beginColor); item.pSymbol =pSymbol; item.strLabel.Format("%.6f%s%.6f",item.min,"-",item.max); m_Classes.push_back(item); } else { //获取过渡色彩的各个分量 int begin_r_color = (int)GetRValue(beginColor); int begin_g_color = (int)GetGValue(beginColor); int begin_b_color = (int)GetBValue(beginColor); int end_r_color =(int) GetRValue(endColor); int end_g_color =(int) GetGValue(endColor); int end_b_color =(int) GetBValue(endColor); double dr,dg,db; BYTE markr,markg,markb; if(m_Breaknum == 1) { dr = end_r_color - begin_r_color; dg = end_g_color - begin_g_color; db = end_b_color - begin_b_color; } else { dr = (end_r_color - begin_r_color) / (double)(m_Breaknum - 1); dg = (end_g_color - begin_g_color) / (double)(m_Breaknum - 1); db = (end_b_color - begin_b_color) / (double)(m_Breaknum - 1); } double step =(dmax-dmin)/m_Breaknum; //分段的方法 /* upper = min + i * step 保留六位有效位 下一个区间为上一个的上限+0.000001 */ //依次加入区间 for(int i=0;i<m_Breaknum;i++) { markr =begin_r_color+i*dr; markg =begin_g_color+i*dg; markb =begin_b_color +i*db; item.min =dmin+step*i+0.000001; item.max =dmin+step*(i+1); pSymbol =pDefaultSymbol->Clone(); pSymbol->SetColor(RGB(markr,markg,markb)); item.pSymbol =pSymbol; item.strLabel.Format("%.6f%s%.6f",item.min,"-",item.max); m_Classes.push_back(item); } //设置第一个和最后一个区间 m_Classes[0].min =dmin; m_Classes[m_Breaknum-1].max =dmax;//.........这里部分代码省略.........
开发者ID:lozpeng,项目名称:applesales,代码行数:101,
示例9: CreateCompatibleDCHBITMAP KGUISkin::CreateGradient(HDC hDC, COLORREF clrBase, COLORREF clrHigh, COLORREF clrLow, bool bVert){ HDC hMemDC = CreateCompatibleDC (hDC) ; HBITMAP hDDB = CreateCompatibleBitmap (hDC, m_nWidth, m_nWidth); if (hDDB == NULL) { ::DeleteDC (hMemDC) ; assert(false); return NULL; } HGDIOBJ hOldBmp = ::SelectObject (hMemDC, hDDB); TRIVERTEX vertex[4]; vertex[0].x = 0; vertex[0].y = 0; vertex[0].Red = GetRValue(clrHigh) * 256; vertex[0].Green = GetGValue(clrHigh) * 256; vertex[0].Blue = GetBValue(clrHigh) * 256; vertex[0].Alpha = 0x0000; vertex[1].Red = GetRValue(clrBase) * 256; vertex[1].Green = GetGValue(clrBase) * 256; vertex[1].Blue = GetBValue(clrBase) * 256; vertex[1].Alpha = 0x0000; if (bVert) { vertex[1].x = m_nWidth; vertex[1].y = m_nWidth / 2; vertex[3].x = 0; vertex[3].y = m_nWidth / 2; } else { vertex[3].y = 0; vertex[3].x = m_nWidth / 2; vertex[1].y = m_nWidth; vertex[1].x = m_nWidth / 2; } vertex[3].Red = GetRValue(clrBase) * 256; vertex[3].Green = GetGValue(clrBase) * 256; vertex[3].Blue = GetBValue(clrBase) * 256; vertex[3].Alpha = 0x0000; vertex[2].x = m_nWidth; vertex[2].y = m_nWidth; vertex[2].Red = GetRValue(clrLow) * 256; vertex[2].Green = GetGValue(clrLow) * 256; vertex[2].Blue = GetBValue(clrLow) * 256; vertex[2].Alpha = 0x0000; GRADIENT_RECT gRect; gRect.UpperLeft = 0; gRect.LowerRight= 1; GRADIENT_RECT gTriangle2; gTriangle2.UpperLeft = 0; gTriangle2.LowerRight = 1; if (bVert) { GradientFill(hMemDC, vertex, 2, &gRect, 1, GRADIENT_FILL_RECT_V); GradientFill(hMemDC, &vertex[2], 2, &gTriangle2, 1, GRADIENT_FILL_RECT_V); } else { GradientFill(hMemDC, vertex, 2, &gRect, 1, GRADIENT_FILL_RECT_H); GradientFill(hMemDC, &vertex[2], 2, &gTriangle2, 1, GRADIENT_FILL_RECT_H); } BITMAPINFO info; UInt32 nPitch = (m_nWidth * 24 + 31) / 32 * 4; UInt32 dibSize = sizeof(BITMAPINFOHEADER) + (nPitch * m_nWidth); BYTE * pBuf = new BYTE[dibSize]; BYTE *pData = (BYTE*)pBuf; memset(pBuf, 0, dibSize); memset(&info, 0, sizeof(BITMAPINFOHEADER)); info.bmiHeader.biBitCount = 24; info.bmiHeader.biCompression= BI_RGB; info.bmiHeader.biClrUsed = 0; info.bmiHeader.biHeight = m_nWidth; info.bmiHeader.biPlanes = 1; info.bmiHeader.biSizeImage = 0; info.bmiHeader.biSize = 40; info.bmiHeader.biWidth = m_nWidth; pData += sizeof(BITMAPINFOHEADER); // Copy the bitmap ::GetDIBits (hMemDC, hDDB, 0, m_nWidth, pData, &info, DIB_RGB_COLORS) ; HBITMAP hBitmap = ::CreateDIBitmap(hDC, &info.bmiHeader, CBM_INIT, pData, &info, DIB_RGB_COLORS); delete[] pBuf; ::SelectObject (hMemDC, hOldBmp); DeleteObject (hDDB) ; DeleteDC (hMemDC) ; return hBitmap;//.........这里部分代码省略.........
开发者ID:iShumai,项目名称:GUIEngine,代码行数:101,
示例10: WndProcLRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HWND hwndParent = hWndParent; HWND hwndImage = hWndImage; if (hwnd == hwndParent) { if (message == WM_SIZE) { ShowWindow(hwndImage, wParam == SIZE_MINIMIZED ? SW_HIDE : SW_SHOW); } if (message == WM_WINDOWPOSCHANGED) { SetWindowPos(hwndImage, hwndParent, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE); } return CallWindowProc( (long (__stdcall *)(HWND,unsigned int,unsigned int,long))oldProc, hwnd, message, wParam, lParam ); } switch (message) { case WM_PAINT: if (bgBitmap.bReady) { ECS(); PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd, &ps); if (bgBitmap.iType == MIL_BITMAP) { HDC cdc = CreateCompatibleDC(hdc); SelectObject(cdc, bgBitmap.hBitmap); for (unsigned int x = 0; x < uWndWidth; x += bgBitmap.rPos.right) { for (unsigned int y = 0; y < uWndHeight; y += bgBitmap.rPos.bottom) { BitBlt(hdc, x, y, bgBitmap.rPos.right, bgBitmap.rPos.bottom, cdc, 0, 0, SRCCOPY); } } DeleteDC(cdc); } else { int r = GetRValue(bgBitmap.cGradientFrom) << 10; int g = GetGValue(bgBitmap.cGradientFrom) << 10; int b = GetBValue(bgBitmap.cGradientFrom) << 10; int dr = ((GetRValue(bgBitmap.cGradientTo) << 10) - r) / (int)uWndHeight * 4; int dg = ((GetGValue(bgBitmap.cGradientTo) << 10) - g) / (int)uWndHeight * 4; int db = ((GetBValue(bgBitmap.cGradientTo) << 10) - b) / (int)uWndHeight * 4; RECT rect; rect.left = 0; rect.top = 0; rect.right = uWndWidth; rect.bottom = 4; while (rect.top < (int)uWndHeight) { HBRUSH brush = CreateSolidBrush(RGB(r>>10,g>>10,b>>10)); FillRect(hdc, &rect, brush); DeleteObject(brush); rect.top+=4; rect.bottom+=4; r+=dr; g+=dg; b+=db; } } myImageList *img = bgBitmap.next; while (img) { if (img->iType == MIL_TEXT) { SetBkMode(hdc, TRANSPARENT); SetTextColor(hdc, img->cTextColor); SelectObject(hdc, img->hFont); DrawText(hdc, img->szText, -1, &img->rPos, DT_TOP | DT_LEFT | DT_NOPREFIX | DT_WORDBREAK); } else if (img->iType == MIL_BITMAP) { HDC cdc = CreateCompatibleDC(hdc); SelectObject(cdc, img->hBitmap); BitBlt(hdc, img->rPos.left, img->rPos.top, img->rPos.right - img->rPos.left, img->rPos.bottom - img->rPos.top, cdc, 0, 0, SRCCOPY); DeleteDC(cdc); } else { COLORREF cColor; HBITMAP bmAndBack, bmAndObject, bmAndMem, bmSave; HBITMAP bmBackOld, bmObjectOld, bmMemOld, bmSaveOld; HDC hdcMem, hdcBack, hdcObject, hdcTemp, hdcSave; POINT ptSize; HBITMAP hBitmap = img->hBitmap; hdcTemp = CreateCompatibleDC(hdc); SelectObject(hdcTemp, hBitmap); // Select the bitmap ptSize.x = img->rPos.right - img->rPos.left; ptSize.y = img->rPos.bottom - img->rPos.top; DPtoLP(hdcTemp, &ptSize, 1); // Convert from device to logical points // Create some DCs to hold temporary data. hdcBack = CreateCompatibleDC(hdc); hdcObject = CreateCompatibleDC(hdc); hdcMem = CreateCompatibleDC(hdc); hdcSave = CreateCompatibleDC(hdc); // Create a bitmap for each DC. DCs are required for a number of//.........这里部分代码省略.........
开发者ID:kichik,项目名称:nsis-1,代码行数:101,
示例11: if//.........这里部分代码省略......... // Draw button if (m_nCurrentSel == nIndex) pDC->DrawEdge(TextButtonRect, BDR_RAISEDINNER, BF_RECT); else if (m_nChosenColourSel == nIndex) pDC->DrawEdge(TextButtonRect, BDR_SUNKENOUTER, BF_RECT); // Draw custom text CFont *pOldFont = (CFont*) pDC->SelectObject(&m_Font); pDC->SetBkMode(TRANSPARENT); pDC->DrawText(m_strCustomText, TextButtonRect, DT_CENTER | DT_VCENTER | DT_SINGLELINE); pDC->SelectObject(pOldFont); return; } // For the Default Text area if (m_strDefaultText.GetLength() && nIndex == DEFAULT_BOX_VALUE) { // Fill background pDC->FillSolidRect(m_DefaultTextRect, ::GetSysColor(COLOR_3DFACE)); // The extent of the actual text button CRect TextButtonRect = m_DefaultTextRect; TextButtonRect.DeflateRect(1,1); // fill background if (m_nChosenColourSel == nIndex && m_nCurrentSel != nIndex) pDC->FillSolidRect(TextButtonRect, ::GetSysColor(COLOR_3DLIGHT)); else pDC->FillSolidRect(TextButtonRect, ::GetSysColor(COLOR_3DFACE)); // Draw thin line around text CRect LineRect = TextButtonRect; LineRect.DeflateRect(2*m_nMargin,2*m_nMargin); CPen pen(PS_SOLID, 1, ::GetSysColor(COLOR_3DSHADOW)); CPen* pOldPen = pDC->SelectObject(&pen); pDC->SelectStockObject(NULL_BRUSH); pDC->Rectangle(LineRect); pDC->SelectObject(pOldPen); // Draw button if (m_nCurrentSel == nIndex) pDC->DrawEdge(TextButtonRect, BDR_RAISEDINNER, BF_RECT); else if (m_nChosenColourSel == nIndex) pDC->DrawEdge(TextButtonRect, BDR_SUNKENOUTER, BF_RECT); // Draw custom text CFont *pOldFont = (CFont*) pDC->SelectObject(&m_Font); pDC->SetBkMode(TRANSPARENT); pDC->DrawText(m_strDefaultText, TextButtonRect, DT_CENTER | DT_VCENTER | DT_SINGLELINE); pDC->SelectObject(pOldFont); return; } CRect rect; if (!GetCellRect(nIndex, rect)) return; // Select and realize the palette CPalette* pOldPalette = NULL; if (pDC->GetDeviceCaps(RASTERCAPS) & RC_PALETTE) { pOldPalette = pDC->SelectPalette(&m_Palette, FALSE); pDC->RealizePalette(); } // fill background if (m_nChosenColourSel == nIndex && m_nCurrentSel != nIndex) pDC->FillSolidRect(rect, ::GetSysColor(COLOR_3DHILIGHT)); else pDC->FillSolidRect(rect, ::GetSysColor(COLOR_3DFACE)); // Draw button if (m_nCurrentSel == nIndex) pDC->DrawEdge(rect, BDR_RAISEDINNER, BF_RECT); else if (m_nChosenColourSel == nIndex) pDC->DrawEdge(rect, BDR_SUNKENOUTER, BF_RECT); CBrush brush(PALETTERGB(GetRValue(GetColour(nIndex)), GetGValue(GetColour(nIndex)), GetBValue(GetColour(nIndex)) )); CPen pen; pen.CreatePen(PS_SOLID, 1, ::GetSysColor(COLOR_3DSHADOW)); CBrush* pOldBrush = (CBrush*) pDC->SelectObject(&brush); CPen* pOldPen = (CPen*) pDC->SelectObject(&pen); // Draw the cell colour rect.DeflateRect(m_nMargin+1, m_nMargin+1); pDC->Rectangle(rect); // restore DC and cleanup pDC->SelectObject(pOldBrush); pDC->SelectObject(pOldPen); brush.DeleteObject(); pen.DeleteObject(); if (pOldPalette && pDC->GetDeviceCaps(RASTERCAPS) & RC_PALETTE) pDC->SelectPalette(pOldPalette, FALSE);}
开发者ID:BackupTheBerlios,项目名称:iris-svn,代码行数:101,
示例12: GetDCvoid ProgressWindow::draw(int count){ HDC hDC = GetDC(hWnd); int prgBase = getProgress(); int prg = min((prgBase * p_width)/1000, p_width-1); int center = int(prg*((cos(count*0.1)+1)*0.8) / 2); DWORD c=GetSysColor(COLOR_ACTIVECAPTION); double red=GetRValue(c); double green=GetGValue(c); double blue=GetBValue(c); double blue1=min(255., blue*1.4); double green1=min(255., green*1.4); double red1=min(255., red*1.4); int blueD=int(blue/2); int redD=int(red/2); int greenD=int(green/2); SelectObject(hDC, GetStockObject(DC_PEN)); SelectObject(hDC, GetStockObject(NULL_BRUSH)); SetDCPenColor(hDC, RGB(redD,greenD,blueD)); Rectangle(hDC, 0, 0, p_width, p_height-1); SelectObject(hDC, GetStockObject(DC_BRUSH)); SelectObject(hDC, GetStockObject(NULL_PEN)); SetDCBrushColor(hDC, GetSysColor(COLOR_3DHIGHLIGHT)); Rectangle(hDC, prg, 1, p_width-1, p_height-2); TRIVERTEX vert[4]; vert [0] .x = 1; vert [0] .y = 1; vert [0] .Red = 0xff00&DWORD(red*256); vert [0] .Green = 0xff00&DWORD(green*256); vert [0] .Blue = 0xff00&DWORD(blue*256); vert [0] .Alpha = 0x0000; vert [1] .x = center; vert [1] .y = p_height-2; vert [1] .Red = 0xff00&DWORD(red1*256); vert [1] .Green = 0xff00&DWORD(green1*256); vert [1] .Blue = 0xff00&DWORD(blue1*256); vert [1] .Alpha = 0x0000; vert [2] .x = center; vert [2] .y = 1; vert [2] .Red = 0xff00&DWORD(red1*256); vert [2] .Green = 0xff00&DWORD(green1*256); vert [2] .Blue = 0xff00&DWORD(blue1*256); vert [2] .Alpha = 0x0000; vert [3] .x = prg; vert [3] .y = p_height-2; vert [3] .Red = 0xff00&DWORD(red*256); vert [3] .Green = 0xff00&DWORD(green*256); vert [3] .Blue = 0xff00&DWORD(blue*256); vert [3] .Alpha = 0x0000; GRADIENT_RECT gr[2]; gr[0].UpperLeft=0; gr[0].LowerRight=1; gr[1].UpperLeft=2; gr[1].LowerRight=3; GradientFill(hDC,vert, 4, gr, 2, GRADIENT_FILL_RECT_H); ReleaseDC(hWnd, hDC);}
开发者ID:ledusledus,项目名称:meos,代码行数:71,
示例13: whilebool CRTFParser::ParseBlock (const STextFormatDesc &InitFormat, CString *retsError)// ParseBlock//// Parses a block and leaves the input position at the first character after// the end of the block. { // Better be the beginning of a block if (*m_pInput++ != '{') { *retsError = ERR_BRACE_EXPECTED; return false; } // Keep track of the current format and text STextFormatDesc Format = InitFormat; // Keep looping until we hit the end of the block bool bBlockStart = true; while (*m_pInput != '}') { // End of stream if (*m_pInput == '/0') { *retsError = ERR_UNEXPECTED_EOS; return false; } // If an escape character then parse an op code else if (*m_pInput == '//' || *m_pInput == '/') { m_pInput++; // If this is the beginning of the block then parse some codes if (bBlockStart) { CString sCode; CString sParam; if (!ParseCode(&sCode, &sParam, retsError)) return false; // Interpret code if (strEquals(sCode, CODE_BOLD)) Format.bBold = true; else if (strEquals(sCode, CODE_COLOR)) { DWORD dwRGB = (DWORD)strToInt(sParam, 0); Format.wColor = CG16bitImage::RGBValue(GetRValue(dwRGB), GetGValue(dwRGB), GetBValue(dwRGB)); } else if (strEquals(sCode, CODE_TYPEFACE)) Format.sTypeface = sParam; else if (strEquals(sCode, CODE_ITALIC)) Format.bItalic = true; else if (strEquals(sCode, CODE_RTF)) ; else { *retsError = strPatternSubst(ERR_UNKNOWN_CODE, sCode); return false; } } // Parse some escape characters else { switch (*m_pInput) { case '{': case '}': case '//': case '/': AddSpan(CString(m_pInput, 1), Format); break; case 'n': AddSpan(NULL_STR, Format, true); break; default: { *retsError = strPatternSubst(ERR_UNKNOWN_CODE, CString(m_pInput, 1)); return false; } } m_pInput++; } } // Special characters//.........这里部分代码省略.........
开发者ID:Ttech,项目名称:Transcendence,代码行数:101,
示例14: HighlightHexColorvoid HighlightHexColor(const HWND h_scintilla, const int start_position, const int end_position){ int match_count = 0; int search_start = start_position; while (match_count < MAX_COLOR_CODE_HIGHTLIGHT && search_start < end_position) { Sci_TextToFind tf; tf.chrg.cpMin = search_start; tf.chrg.cpMax = end_position+1; tf.lpstrText = "#"; int target_pos = ::SendMessage(h_scintilla, SCI_FINDTEXT, 0, (LPARAM)&tf); // not found if(target_pos == -1) { break; } // read in the possible color code sequence char hex_color[8]; int index = 0; for(; index<6; index++){ char t = (char)::SendMessage(h_scintilla, SCI_GETCHARAT, target_pos+1 + index, 0); if( t=='/0' ) break; if( strchr("0123456789abcdefABCDEF", t) == NULL ) break; hex_color[index] = t; } hex_color[index] = '/0'; // align the positions int target_length = strlen(hex_color); int target_start = target_pos; int target_end = target_pos + target_length + 1; // don't forget the '#' // invalid hex color length if (target_length !=3 && target_length != 6) { search_start = target_end; // move on continue; } // pad 3 char hex string if (target_length == 3) { hex_color[6] = '/0'; hex_color[5] = hex_color[2]; hex_color[4] = hex_color[2]; hex_color[3] = hex_color[1]; hex_color[2] = hex_color[1]; hex_color[1] = hex_color[0]; hex_color[0] = hex_color[0]; } // parse hex color string to COLORREF COLORREF color = strtol(hex_color, NULL, 16); color = RGB(GetBValue(color),GetGValue(color),GetRValue(color)); bool can_proceed = HighlightCode(h_scintilla, color, target_start, target_end); // exceeded the indicator count if(!can_proceed) break; search_start = target_end; // move on match_count++; }}
开发者ID:ard225,项目名称:nppqcp,代码行数:72,
示例15: RGBCOLORREF CColorListCtrl::InvertColor(COLORREF cf){ return RGB(abs(220-GetRValue(cf)),abs(220-GetGValue(cf)),abs(220-GetBValue(cf)));}
开发者ID:vinhnguyen200893,项目名称:fr-hcm14-mock-project,代码行数:4,
示例16: _TBOOL CRasterPropPage::OnApply(){ if(!m_wndPropList) return FALSE; CBCGPProp* pProp = m_wndPropList.GetProperty(0); int nCount = pProp->GetSubItemsCount(); std::string str = _T("波段组合"); CBCGPProp* pSubProp = NULL; for (int i=0; i<nCount; i++) { pSubProp = pProp->GetSubItem(i); if (0 == strcmp(str.c_str(),pSubProp->GetName())) { break; } } // Carto::CRasterLayer* pRasLayer = dynamic_cast<Carto::CRasterLayer*>(m_player); Carto::IRasterRenderPtr pRender =pRasLayer->GetRender(); Carto::RASTER_RENDER_TYPE rendertype =pRender->GetRenderType(); if(rendertype != Carto::RASTER_RGBRENDER) return FALSE; Carto::CRasterRGBRender* pRGBRender = dynamic_cast<Carto::CRasterRGBRender*>(pRasLayer->GetRender().get()); if (pRGBRender->GetRGBMode()) { pRGBRender->SetRedBandIndex(long(pSubProp->GetSubItem(0)->GetValue())); pRGBRender->SetGreenBandIndex(long(pSubProp->GetSubItem(1)->GetValue())); pRGBRender->SetBlueBandIndex(long(pSubProp->GetSubItem(2)->GetValue())); } std::string strColormap = _T("调色板"); pSubProp = NULL; bool bfind=false; for (int i=0; i<nCount; i++) { pSubProp = pProp->GetSubItem(i); if (0 == strcmp(strColormap.c_str(),pSubProp->GetName())) { bfind=true; break; } } if (!bfind) return TRUE; Geodatabase::IRasterDatasetPtr pRaster = m_player->GetDataObject(); BYTE byRed[256]; BYTE byGreen[256]; BYTE byBlue[256]; for (int i=0; i<256; i++) { long lValue = pSubProp->GetSubItem(i)->GetValue(); byRed[i] = GetRValue(lValue); byGreen[i] = GetGValue(lValue); byBlue[i] = GetBValue(lValue); } pRaster->SetChannelPalette(1,byRed,byGreen,byBlue); return TRUE;}
开发者ID:lozpeng,项目名称:applesales,代码行数:66,
示例17: GetRValue/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Function Headervoid CStaticCounter::Draw(CStaticDC* pDC, DWORD dwChar, int nCol)//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////{ COLORREF crNotchColor = m_crForeground; if (dwChar == STCOUNTERALL && !m_bSpecifiedFadeColour) // The colour used will be a dim version of normal foreground { int r = GetRValue(m_crForeground)/3; int g = GetGValue(m_crForeground)/3; int b = GetBValue(m_crForeground)/3; crNotchColor = RGB(r,g,b); } else if (dwChar == STCOUNTERALL && m_bSpecifiedFadeColour) crNotchColor = m_crDimForeground; // Create the Pen accordingly CPen pen(PS_SOLID | PS_ENDCAP_ROUND, m_nNotchWidth, crNotchColor); CPen* pOldPen=pDC->SelectObject(&pen); if ( (dwChar & NOTCH1) || dwChar == STCOUNTERALL) { // should I draw the first bar in the display? pDC->MoveTo( nCol + m_nMargin*2, m_nMargin ); pDC->LineTo( nCol + m_nNotchLength, m_nMargin ); } if ( dwChar & NOTCH2 || dwChar == STCOUNTERALL) { // should I draw the 2nd bar in the display? [minus sign] pDC->MoveTo(nCol + m_nNotchLength + m_nMargin, m_nMargin*2); pDC->LineTo(nCol + m_nNotchLength + m_nMargin, m_nNotchLength + (m_nMargin*2) ); } if ( dwChar & NOTCH3 || dwChar == STCOUNTERALL) { // should I draw the 3rd bar in the display? pDC->MoveTo(nCol + m_nNotchLength + m_nMargin, m_nNotchLength + (m_nMargin*4) ); pDC->LineTo(nCol + m_nNotchLength + m_nMargin, m_nNotchLength*2 + (m_nMargin*3) ); } if ( dwChar & NOTCH4 || dwChar == STCOUNTERALL) { // should I draw the 4th bar in the display? pDC->MoveTo( nCol + m_nMargin*2, m_nNotchLength*2 + (m_nMargin*4) ); pDC->LineTo( nCol + m_nNotchLength, m_nNotchLength*2 + (m_nMargin*4) ); } if ( dwChar & NOTCH5 || dwChar == STCOUNTERALL) { // should I draw the 5th bar in the display? pDC->MoveTo(nCol + m_nMargin, m_nNotchLength + (m_nMargin*4) ); pDC->LineTo(nCol + m_nMargin, m_nNotchLength*2 + (m_nMargin*3) ); } if ( dwChar & NOTCH6 || dwChar == STCOUNTERALL) { // should I draw the 6th bar in the display? pDC->MoveTo(nCol + m_nMargin, m_nMargin*2); pDC->LineTo(nCol + m_nMargin, m_nNotchLength + (m_nMargin*2) ); } if ( dwChar & NOTCH7 || dwChar == STCOUNTERALL) { // should I draw the 7th bar in the display? pDC->MoveTo(nCol + m_nMargin*2, m_nNotchLength + (m_nMargin*3) ); pDC->LineTo(nCol + m_nMargin + m_nNotchLength - m_nMargin, m_nNotchLength + (m_nMargin*3) ); } if ( dwChar == STCOUNTER11 ) { // should I draw the point? pDC->MoveTo( nCol + m_nMargin*2, m_nNotchLength*2 + (m_nMargin*4) ); pDC->LineTo( nCol + (m_nNotchLength/2), m_nNotchLength*2 + (m_nMargin*4) ); } if ( dwChar == STCOUNTER12 ) { // should I draw the colon? // Upper dot: pDC->MoveTo( nCol + m_nMargin*2+(m_nMargin*2), m_nNotchLength ); pDC->LineTo( nCol + (m_nNotchLength/2)+(m_nMargin*2), m_nNotchLength ); // Lower dot: pDC->MoveTo( nCol + m_nMargin*2+(m_nMargin*2), m_nNotchLength*2 + (m_nMargin) ); pDC->LineTo( nCol + (m_nNotchLength/2)+(m_nMargin*2), m_nNotchLength*2 + (m_nMargin) ); } pDC->SelectObject(pOldPen);}
开发者ID:Chiasung,项目名称:Webcam,代码行数:73,
示例18: GetClientRectvoid CPrefsStatic::MakeCaptionBitmap(){ if (m_bm.m_hObject) return; // already have bitmap; return CRect cr; GetClientRect(cr); int w = cr.Width(); int h = cr.Height(); // Create bitmap same size as caption area and select into memory DC // CWindowDC dcWin(this); CDC dc; dc.CreateCompatibleDC(&dcWin); m_bm.DeleteObject(); m_bm.CreateCompatibleBitmap(&dcWin, w, h); CBitmap* pOldBitmap = dc.SelectObject(&m_bm); COLORREF clrBG = ::g_PaintManager->GetColor(COLOR_ACTIVECAPTION); // background color int r = GetRValue(clrBG); // red.. int g = GetGValue(clrBG); // ..green int b = GetBValue(clrBG); // ..blue color vals int x = 8*cr.right/8; // start 5/6 of the way right int w1 = x - cr.left; // width of area to shade int NCOLORSHADES = 1; // this many shades in gradient int xDelta= max( w / NCOLORSHADES , 1); // width of one shade band PaintRect(dc, x, 0, cr.right-x, h, clrBG); while (x > xDelta) { // paint bands right to left x -= xDelta; // next band int wmx2 = (w1-x)*(w1-x); // w minus x squared int w2 = w1*w1; // w squared PaintRect(dc, x, 0, xDelta, h, RGB(r-(r*wmx2)/w2, g-(g*wmx2)/w2, b-(b*wmx2)/w2)); } PaintRect(dc,0,0,x,h,RGB(GetRValue(clrBG),GetGValue(clrBG),GetBValue(clrBG))); // whatever's left ==> black // draw the 'constant' text // create a font, if we need to if (m_nameFont.GetSafeHandle()==NULL) { m_nameFont.CreateFont( 18, 0, 0, 0, FW_BOLD, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, FF_MODERN, m_csFontName); } CFont * OldFont = dc.SelectObject(&m_nameFont); // restore old font dc.SelectObject(OldFont); // Restore DC dc.SelectObject(pOldBitmap);}
开发者ID:aolko,项目名称:construct,代码行数:67,
示例19: DrawMultiPenBrushvoid CPenBrushUnit::DrawMultiPenBrush(CDC *memDC,CPoint ePoint,std::vector<temSavePoint> &MultipsPoint,MultiInfo &GetMultiInfo,DWORD mouseid){ int Red,Green,Blue; Red=GetRValue(GetMultiInfo.penColor); Green=GetGValue(GetMultiInfo.penColor); Blue=GetBValue(GetMultiInfo.penColor); Graphics mGraphics(memDC->m_hDC); mGraphics.SetSmoothingMode(SmoothingModeAntiAlias); SolidBrush brush(Color(255,Red,Green,Blue)); UINT Size=MultipsPoint.size(); CPoint sPoint=MultipsPoint[Size-1].point; if(Size==1) { if(fwidth.find(mouseid)!=fwidth.end()) fwidth.erase(mouseid); fwidth.insert(std::map<DWORD,float>::value_type(mouseid,MultipsPoint[0].preWidth)); PushStart(ePoint,mouseid); } if(Push(sPoint,ePoint,mouseid)) { RectF headRect; RectF tailRect; float width,dx,dy; PointF lfCenter,rtCenter; mGraphics.FillPolygon(&brush,pts,npts); mGraphics.DrawPolygon(&Pen(Color(255,Red,Green,Blue),0.5f),pts,npts); if(npts==4) { headRect=RectF((pts[0].X+pts[3].X)/2.0f,(pts[0].Y+pts[3].Y)/2.0f,0.0f,0.0f); tailRect=RectF((pts[1].X+pts[2].X)/2.0f,(pts[1].Y+pts[2].Y)/2.0f,0.0f,0.0f); dx=pts[3].X-pts[0].X; dy=pts[3].Y-pts[0].Y; width=sqrt(dx*dx+dy*dy)/2.0f+0.5f; headRect.Inflate(width,width); dx=pts[2].X-pts[1].X; dy=pts[2].Y-pts[1].Y; width=sqrt(dx*dx+dy*dy)/2.0f+0.5f; tailRect.Inflate(width,width); } else { headRect=RectF((pts[0].X+pts[9].X)/2.0f,(pts[0].Y+pts[9].Y)/2.0f,0.0f,0.0f); tailRect=RectF((pts[4].X+pts[5].X)/2.0f,(pts[4].Y+pts[5].Y)/2.0f,0.0f,0.0f); dx=pts[9].X-pts[0].X; dy=pts[9].Y-pts[0].Y; width=sqrt(dx*dx+dy*dy)/2.0f+0.5f; headRect.Inflate(width,width); dx=pts[5].X-pts[4].X; dy=pts[5].Y-pts[4].Y; width=sqrt(dx*dx+dy*dy)/2.0f+0.5f; tailRect.Inflate(width,width); } brush.SetColor(Color(255,Red,Green,Blue)); mGraphics.FillEllipse(&brush,headRect); mGraphics.FillEllipse(&brush,tailRect); temSavePoint addPoint; addPoint.point=ePoint; addPoint.alpha=MultipsPoint[Size-1].alpha; addPoint.preWidth=MultipsPoint[Size-1].preWidth; MultipsPoint.push_back(addPoint); }}
开发者ID:duiniuluantanqin,项目名称:SCT_Board,代码行数:64,
示例20: ifvoid MaterialPreviewPropView::OnPropertyChangeNotification( NMHDR *nmhdr, LRESULT *lresult ) { idVec3 testColor; int lightId = 0; COLORREF color; NMPROPTREE *nmProp; CPropTreeItem *item; CPropTreeItem *parent; nmProp = (NMPROPTREE *)nmhdr; item = nmProp->pItem; // Determine which light this item modifies parent = item->GetParent(); if ( parent ) { lightId = parent->GetCtrlID(); } idStr itemLabel = item->GetLabelText(); if ( itemLabel == "Model Type" ) { materialPreview->OnModelChange( item->GetItemValue() ); } else if ( itemLabel == "Custom Model" ) { materialPreview->OnCustomModelChange( (const char *)item->GetItemValue() ); } else if ( itemLabel == "Show Lights" ) { materialPreview->OnShowLightsChange( item->GetItemValue() ? true : false ); } else if ( itemLabel == "Shader" ) { CPropTreeItemCombo *combo = (CPropTreeItemCombo *)item; CString materialName; combo->GetLBText( combo->GetCurSel(), materialName ); materialPreview->OnLightShaderChange( lightId, materialName.GetBuffer() ); } else if ( itemLabel == "Radius" ) { materialPreview->OnLightRadiusChange( lightId, atof( (char *)item->GetItemValue() ) ); } else if ( itemLabel == "Color" ) { color = item->GetItemValue(); testColor.x = (float)GetRValue( color ) * (float)( 1.f/255.f ); testColor.y = (float)GetGValue( color ) * (float)( 1.f/255.f ); testColor.z = (float)GetBValue( color ) * (float)( 1.f/255.f ); materialPreview->OnLightColorChange( lightId, testColor ); } else if ( itemLabel == "Move light" ) { materialPreview->OnLightAllowMoveChange( lightId, item->GetItemValue() ? true : false ); } else if ( itemLabel.Left(4) == "parm" ) { int index; itemLabel.Strip( "parm" ); index = atoi( itemLabel.c_str() ); materialPreview->OnLocalParmChange( index, atof( (char *)item->GetItemValue() ) ); } else if ( itemLabel.Left(6) == "global" ) { int index; itemLabel.Strip( "global" ); index = atoi( itemLabel.c_str() ); materialPreview->OnGlobalParmChange( index, atof( (char *)item->GetItemValue() ) ); }}
开发者ID:tankorsmash,项目名称:quadcow,代码行数:68,
示例21: DrawCoolBoxstatic void DrawCoolBox (HWND hWnd, HDC hdc, PCOOLBARCTRL pdata){ COOLBARITEMDATA* tmpdata; RECT rc; int l,t; WINDOWINFO *info = (WINDOWINFO*)GetWindowInfo (hWnd); DWORD color; DWORD mainc = GetWindowElementAttr (hWnd, WE_MAINC_THREED_BODY); GetClientRect (hWnd, &rc); if (pdata->BackBmp) { FillBoxWithBitmap (hdc, 0, 0, rc.right, rc.bottom, pdata->BackBmp); } color = info->we_rdr->calc_3dbox_color (mainc, LFRDR_3DBOX_COLOR_DARKEST); SetPenColor (hdc, RGBA2Pixel (hdc, GetRValue (color), GetGValue (color), GetBValue (color), GetAValue (color))); MoveTo (hdc, 0, 0); LineTo (hdc, rc.right, 0); MoveTo (hdc, 0, rc.bottom - 2); LineTo (hdc, rc.right, rc.bottom - 2); color = info->we_rdr->calc_3dbox_color (mainc, LFRDR_3DBOX_COLOR_LIGHTEST); SetPenColor (hdc, RGBA2Pixel (hdc, GetRValue (color), GetGValue (color), GetBValue (color), GetAValue (color))); MoveTo (hdc, 0, 1); LineTo (hdc, rc.right, 1); MoveTo (hdc, 0, rc.bottom - 1); LineTo (hdc, rc.right, rc.bottom - 1); tmpdata = pdata->head; while (tmpdata) { l = tmpdata->RcTitle.left; t = tmpdata->RcTitle.top; switch (tmpdata->ItemType) { case TYPE_BARITEM: { WINDOWINFO *info = (WINDOWINFO*)GetWindowInfo (hWnd); RECT rcTmp; rcTmp.left = l + 2; rcTmp.top = 4; rcTmp.right = l + 4; rcTmp.bottom = rc.bottom - 4; info->we_rdr->draw_3dbox (hdc, &rcTmp, GetWindowElementAttr (hWnd, WE_MAINC_THREED_BODY), LFRDR_BTN_STATUS_PRESSED); } break; case TYPE_BMPITEM: FillBoxWithBitmap (hdc, l + 2, t + 2, pdata->ItemWidth, pdata->ItemHeight, tmpdata->Bmp); break; case TYPE_TEXTITEM: { SIZE size; int h; WINDOWINFO *info; RECT rc; if (tmpdata->Caption == NULL || tmpdata->Caption [0] == '/0') break; GetTextExtent (hdc, tmpdata->Caption, -1, &size); h = (pdata->ItemHeight - size.cy) / 2; SetBkMode (hdc, BM_TRANSPARENT); if (tmpdata->Disable) { info = (WINDOWINFO*)GetWindowInfo (hWnd); rc.left = l + 2; rc.top = t + h + 2; rc.right = rc.left + size.cx; rc.bottom = rc.top + size.cy; info->we_rdr->disabled_text_out (hWnd, hdc, tmpdata->Caption, &rc, DT_SINGLELINE); } else { SetBkColor (hdc, GetWindowBkColor (hWnd)); SetTextColor (hdc, PIXEL_black); TextOut (hdc, l+2, t + h + 2, tmpdata->Caption); } break; } default: break; } tmpdata = tmpdata->next; } if ((tmpdata = GetCurSel (pdata)) == NULL) return;//.........这里部分代码省略.........
开发者ID:Trietptm-on-Coding-Algorithms,项目名称:CodeLibrary,代码行数:101,
示例22: _CombineBasedOnType//// Add a splash of colour//COLORREF _CombineBasedOnType(int iTabType, COLORREF clrSource){ RGBQUAD source = { 0 }; source.rgbBlue = GetBValue(clrSource); source.rgbGreen = GetGValue(clrSource); source.rgbRed = GetRValue(clrSource); COLORREF clr; switch (iTabType) { case TAB_PIC: // green { RGBQUAD tint = { 15, 255, 165 }; clr = RGB_TO_COLORREF(_Combine(tint, source)); } break; case TAB_TEXT: // cyan { RGBQUAD tint = { 255, 255, 155 }; clr = RGB_TO_COLORREF(_Combine(tint, source)); } break; case TAB_SOUND: // orange? { RGBQUAD tint = { 255, 0, 0 }; clr = RGB_TO_COLORREF(_Combine(tint, source)); } break; case TAB_VIEW: // blue { RGBQUAD tint = { 239, 132, 33 }; clr = RGB_TO_COLORREF(_Combine(tint, source)); } break; case TAB_FONT: // yellow { RGBQUAD tint = { 0, 255, 255}; clr = RGB_TO_COLORREF(_Combine(tint, source)); } break; case TAB_VOCAB: // flesh { RGBQUAD tint = { 162, 206, 255 }; clr = RGB_TO_COLORREF(_Combine(tint, source)); } break; case TAB_SCRIPT: // red { RGBQUAD tint = { 25, 25, 255 }; clr = RGB_TO_COLORREF(_Combine(tint, source)); } break; case TAB_CURSOR: // pink { RGBQUAD tint = { 172, 172, 255 }; clr = RGB_TO_COLORREF(_Combine(tint, source)); } break; case TAB_GAME: // grey { RGBQUAD tint = { 128, 128, 128 }; clr = RGB_TO_COLORREF(_Combine(tint, source)); } break; default: clr = clrSource; break; } return clr; }
开发者ID:OmerMor,项目名称:SciCompanion,代码行数:73,
示例23: colorref2qrgbstatic inline QRgb colorref2qrgb(COLORREF col){ return qRgb(GetRValue(col),GetGValue(col),GetBValue(col));}
开发者ID:husninazer,项目名称:qt,代码行数:4,
示例24: memset//.........这里部分代码省略......... { if(proIsExist(temp,proArr)==-1) { pro.data=0; lstrcpy(pro.rtfType,temp.GetBuffer()); temp.ReleaseBuffer(); lstrcpy(pro.htmlTagB,_T("<strike>")); lstrcpy(pro.htmlTagE,_T("</strike>")); proArr.Add(pro); } } else if(temp.Compare(_T("//strike0"))==0) { int id=proIsExist(temp,proArr); if(id!=-1); proArr.RemoveAt(id); } else if(temp.Find(_T("//fs"))>=0) { int num=strGetNumber(temp); if(num<=0) num=24; int id=proIsExist(_T("//fs"),proArr); if(id==-1) { pro.data=num; lstrcpy(pro.rtfType,_T("//fs")); //temp.ReleaseBuffer(); protemp.Format(_T("font-size:%d;"),num); lstrcpy(pro.htmlTagB,protemp.GetBuffer()); protemp.ReleaseBuffer(); pro.single=TRUE; proArr.Add(pro); } else{ proArr.GetAt(id).data=num; } } else if(temp.Find(_T("//cf"))>=0) //颜色 { int num=strGetNumber(temp); if(num==-1) continue; int id=proIsExist(_T("//cf"),proArr); if(num>m_cg.GetCount()) protemp.Format(_T("color:#%FFFFFF")); else if(num>=1) protemp.Format(_T("color:#%02x%02x%02x;"),GetRValue(m_cg.GetAt(num-1)),GetGValue(m_cg.GetAt(num-1)),GetBValue(m_cg.GetAt(num-1))); if(num==0 && id!=-1) { proArr.RemoveAt(id); //protemp.Format(_T("color:#%FF#FF#FF")); } else if(num>=1 && id!=-1) //修改 { proArr.GetAt(id).data=num; lstrcpy(proArr.GetAt(id).htmlTagB,protemp.GetBuffer()); protemp.ReleaseBuffer(); } else if(id==-1) //添加 { pro.data=num; lstrcpy(pro.rtfType,_T("//cf")); //temp.ReleaseBuffer(); lstrcpy(pro.htmlTagB,protemp.GetBuffer()); protemp.ReleaseBuffer(); pro.single=TRUE; proArr.Add(pro); } }else if(temp.Find(_T("//highlight"))>=0) //颜色 { int num=strGetNumber(temp); if(num==-1) continue; int id=proIsExist(_T("//highlight"),proArr); if(num>m_cg.GetCount()) protemp.Format(_T("color:#%FFFFFF")); else if(num>=1) protemp.Format(_T("color:#%02x%02x%02x;"),GetRValue(m_cg.GetAt(num-1)),GetGValue(m_cg.GetAt(num-1)),GetBValue(m_cg.GetAt(num-1))); if(num==0 && id!=-1) { proArr.RemoveAt(id); }else if(num>=1 && id!=-1) //修改 { proArr.GetAt(id).data=num; lstrcpy(proArr.GetAt(id).htmlTagB,protemp.GetBuffer()); protemp.ReleaseBuffer(); }else if(id==-1) //添加 { pro.data=num; lstrcpy(pro.rtfType,_T("//highlight")); lstrcpy(pro.htmlTagB,protemp.GetBuffer()); protemp.ReleaseBuffer(); pro.single=TRUE; proArr.Add(pro); } } }}
开发者ID:DLive,项目名称:DLRtfToHtml,代码行数:101,
示例25: IsHorzDockedvoid CCoolBar::NcPaintGripper(CDC* pDC, CRect rcClient){ if (!HasGripper()) return;#ifndef _SCB_STYLE_FLAT CRect gripper = rcClient; CRect rcbtn = m_biHide.GetRect(); BOOL bHorz = IsHorzDocked(); gripper.DeflateRect(1, 1); if (bHorz) { // gripper at left gripper.left -= m_cyGripper; gripper.right = gripper.left + 3; gripper.top = rcbtn.bottom + 3; } else { // gripper at top gripper.top -= m_cyGripper; gripper.bottom = gripper.top + 3; gripper.right = rcbtn.left - 3; } pDC->Draw3dRect(gripper, ::GetSysColor(COLOR_BTNHIGHLIGHT), ::GetSysColor(COLOR_BTNSHADOW)); gripper.OffsetRect(bHorz ? 3 : 0, bHorz ? 0 : 3); pDC->Draw3dRect(gripper, ::GetSysColor(COLOR_BTNHIGHLIGHT), ::GetSysColor(COLOR_BTNSHADOW)); m_biHide.Paint(pDC);#else // compute the caption rectangle BOOL bHorz = IsHorzDocked(); CRect rcGrip = rcClient; CRect rcBtn = m_biHide.GetRect(); if (bHorz) { // right side gripper rcGrip.left -= m_cyGripper + 1; rcGrip.right = rcGrip.left + 11; rcGrip.top = rcBtn.bottom + 3; } else { // gripper at top rcGrip.top -= m_cyGripper + 1; rcGrip.bottom = rcGrip.top + 11; rcGrip.right = rcBtn.left - 3; } rcGrip.InflateRect(bHorz ? 1 : 0, bHorz ? 0 : 1); // draw the caption background //CBrush br; COLORREF clrCptn = m_bActive ? ::GetSysColor(COLOR_ACTIVECAPTION) : ::GetSysColor(COLOR_INACTIVECAPTION); // query gradient info (usually TRUE for Win98/Win2k) BOOL bGradient = FALSE; ::SystemParametersInfo(SPI_GETGRADIENTCAPTIONS, 0, &bGradient, 0); if (!bGradient) pDC->FillSolidRect(&rcGrip, clrCptn); // solid color else { // gradient from left to right or from bottom to top // get second gradient color (the right end) COLORREF clrCptnRight = m_bActive ? ::GetSysColor(COLOR_GRADIENTACTIVECAPTION) : ::GetSysColor(COLOR_GRADIENTINACTIVECAPTION); // this will make 2^6 = 64 fountain steps int nShift = 6; int nSteps = 1 << nShift; for (int i = 0; i < nSteps; i++) { // do a little alpha blending int nR = (GetRValue(clrCptn) * (nSteps - i) + GetRValue(clrCptnRight) * i) >> nShift; int nG = (GetGValue(clrCptn) * (nSteps - i) + GetGValue(clrCptnRight) * i) >> nShift; int nB = (GetBValue(clrCptn) * (nSteps - i) + GetBValue(clrCptnRight) * i) >> nShift; COLORREF cr = RGB(nR, nG, nB); // then paint with the resulting color CRect r2 = rcGrip; if (bHorz) { r2.bottom = rcGrip.bottom - ((i * rcGrip.Height()) >> nShift); r2.top = rcGrip.bottom - (((i + 1) * rcGrip.Height()) >> nShift); if (r2.Height() > 0) pDC->FillSolidRect(r2, cr); }//.........这里部分代码省略.........
开发者ID:michael4338,项目名称:CharactorDetection,代码行数:101,
示例26: switchBOOL ImageFilter_Glow::Control(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) { switch (message) { case WM_INITDIALOG: CenterWindow(hWnd,GetParent(hWnd)); SetCursor(LoadCursor(NULL,IDC_ARROW)); CheckRadioButton( hWnd, IDC_MTLID_BUTT, IDC_NODEID_BUTT, data.type ); CheckRadioButton( hWnd, IDC_MTLCOLOR_BUTT, IDC_USERCOLOR_BUTT, data.colorsrc ); colorSwatch = GetIColorSwatch( GetDlgItem(hWnd, IDC_COLOR_SWATCH), RGB(data.color.r>>8,data.color.g>>8,data.color.b>>8), GetString(IDS_DB_GLOW_COLOR)); mtlspin = GetISpinner(GetDlgItem(hWnd, IDC_MTLID_SPIN)); mtlspin->LinkToEdit( GetDlgItem(hWnd,IDC_MTLID_EDIT), EDITTYPE_INT ); mtlspin->SetLimits( 0,15, FALSE ); mtlspin->SetValue(data.mtl,FALSE); nodspin = GetISpinner(GetDlgItem(hWnd, IDC_NODEID_SPIN)); nodspin->LinkToEdit( GetDlgItem(hWnd,IDC_NODEID_EDIT), EDITTYPE_INT ); nodspin->SetLimits( 1,65535, FALSE ); nodspin->SetValue(data.node,FALSE); sizespin = GetISpinner(GetDlgItem(hWnd, IDC_SIZE_SPIN)); sizespin->LinkToEdit( GetDlgItem(hWnd,IDC_SIZE_EDIT), EDITTYPE_INT ); sizespin->SetLimits( 1,100, FALSE ); sizespin->SetValue(data.size,FALSE); HandleInputs(hWnd); return 1; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_MTLID_BUTT: case IDC_NODEID_BUTT: case IDC_MTLCOLOR_BUTT: case IDC_USERCOLOR_BUTT: HandleInputs(hWnd); break; case IDOK: data.type= (IsDlgButtonChecked(hWnd,IDC_MTLID_BUTT) ? IDC_MTLID_BUTT : IDC_NODEID_BUTT); data.mtl= mtlspin->GetIVal(); data.node= nodspin->GetIVal(); data.size= sizespin->GetIVal(); data.colorsrc= (IsDlgButtonChecked(hWnd, IDC_MTLCOLOR_BUTT) ? IDC_MTLCOLOR_BUTT : IDC_USERCOLOR_BUTT); colorref = colorSwatch->GetColor(); data.color.r = GetRValue(colorref)<<8|0xFF; data.color.g = GetGValue(colorref)<<8|0xFF; data.color.b = GetBValue(colorref)<<8|0xFF; EndDialog(hWnd,1); break; case IDCANCEL: EndDialog(hWnd,0); break; } return 1; case WM_DESTROY: if (mtlspin) { ReleaseISpinner(mtlspin); mtlspin = NULL; } if (nodspin) { ReleaseISpinner(nodspin); nodspin = NULL; } if (sizespin) { ReleaseISpinner(sizespin); sizespin = NULL; } if (colorSwatch) { ReleaseIColorSwatch(colorSwatch); colorSwatch = NULL; } break; }//.........这里部分代码省略.........
开发者ID:vasilenkomike,项目名称:xray,代码行数:101,
示例27: switchHBITMAP CDlgCarveRilievo::CarveOrRilievo(COLORREF* pco,BITMAP bm,BITMAPINFOHEADER RGBBITSBITMAPINFO){ HBITMAP bmp; int i,j; int nWidth = bm.bmWidth; int nHeight = bm.bmHeight; int r[2],g[2],b[2]; int r0,g0,b0; COLORREF *pcol=new COLORREF[bm.bmHeight*bm.bmWidth]; for(int k=0; k<bm.bmHeight*bm.bmWidth; k++) { pcol[k]=pco[k]; } switch(m_laplas) { case 1: { for(i=0; i<nWidth-1; i++) { for(j=0; j<nHeight-1; j++) { r[0]=GetRValue(pcol[(i)+(j)*nWidth]); g[0]=GetGValue(pcol[(i)+(j)*nWidth]); b[0]=GetBValue(pcol[(i)+(j)*nWidth]); r[1]=GetRValue(pcol[(i+1)+(j+1)*nWidth]); g[1]=GetGValue(pcol[(i+1)+(j+1)*nWidth]); b[1]=GetBValue(pcol[(i+1)+(j+1)*nWidth]); r0=r[1]-r[0]+128; g0=g[1]-g[0]+128; b0=b[1]-b[0]+128; if(r0>255) r0 = 255; else if(r0<0) r0 = 0; if(g0>255) g0 = 255; else if(r0<0) g0 = 0; if(b0>255) b0 = 255; else if(r0<0) b0 = 0; pcol[i+j*nWidth]=RGB(r0,g0,b0); } } break; } case 2: { for(i=nWidth-1; i>0; i--) { for(j=nHeight-1; j>0; j--) { r[0]=GetRValue(pcol[(i)+(j)*nWidth]); g[0]=GetGValue(pcol[(i)+(j)*nWidth]); b[0]=GetBValue(pcol[(i)+(j)*nWidth]); r[1]=GetRValue(pcol[(i-1)+(j-1)*nWidth]); g[1]=GetGValue(pcol[(i-1)+(j-1)*nWidth]); b[1]=GetBValue(pcol[(i-1)+(j-1)*nWidth]); r0=r[1]-r[0]+128; g0=g[1]-g[0]+128; b0=b[1]-b[0]+128; if(r0>255) r0 = 255; else if(r0<0) r0 = 0; if(g0>255) g0 = 255; else if(r0<0) g0 = 0; if(b0>255) b0 = 255; else if(r0<0) b0 = 0; pcol[i+j*nWidth]=RGB(r0,g0,b0); } } break; } } bmp=CreateDIBitmap(m_dib.memdc,&RGBBITSBITMAPINFO, CBM_INIT,pcol,(BITMAPINFO*)&RGBBITSBITMAPINFO,DIB_RGB_COLORS); delete [] pcol; return bmp;}
开发者ID:huangjunkun,项目名称:code_joy_with_cpp_builder_6,代码行数:90,
示例28: GetRValuevoid CMyDrawPictureClass::drawPicture(){ this->UpdateData(); CString offsetColorStr=_T("0"); DWORD lowColor=0; this->GetDlgItem(IDC_EDIT_OffsetColor1)->GetWindowTextW(offsetColorStr); lowColor = ::wcstol(offsetColorStr,0,16); BYTE offr,offg,offb; offr = GetRValue(lowColor); offg = GetGValue(lowColor); offb = GetBValue(lowColor); CRect rctWindowSize,rctTargetPic; m_LoadSourcePic.GetWindowRect(rctWindowSize); this->GetDlgItem(IDC_STATIC_TARGET)->GetWindowRect(&rctTargetPic); //CClientDC cDC(this); HDC hScrDC,hMemDC; ////为屏幕创建设备描述表 hScrDC = CreateDC(_T("DISPLAY"), NULL, NULL, NULL); //为屏幕设备描述表创建兼容的内存设备描述表 hMemDC = CreateCompatibleDC(hScrDC); //////////////////创建一个原图大小的位图////////////////////// HBITMAP hBitmap = ::CreateCompatibleBitmap(hScrDC,m_Width,this->m_Height); HBITMAP hOldBitmap = (HBITMAP)SelectObject(hMemDC,hBitmap); BitBlt(hMemDC, 0, 0, m_Width,m_Height,hScrDC, rctWindowSize.left, rctWindowSize.top, CAPTUREBLT|SRCCOPY); hBitmap = (HBITMAP)SelectObject(hMemDC,hOldBitmap); // 24位图的BITMAPINFO BITMAPINFO *pBITMAPINFO = (BITMAPINFO*)malloc(sizeof(BITMAPINFOHEADER)); memset(pBITMAPINFO, 0, sizeof(BITMAPINFOHEADER)); BITMAPINFOHEADER *pInfo_Header = (BITMAPINFOHEADER *)pBITMAPINFO; pInfo_Header->biSize = sizeof(BITMAPINFOHEADER); pInfo_Header->biWidth = m_Width; pInfo_Header->biHeight = m_Height; pInfo_Header->biPlanes = 1; pInfo_Header->biBitCount = 24; pInfo_Header->biCompression = BI_RGB; // 获得数据buf DWORD bufSize = (pInfo_Header->biWidth * 3 + 3) / 4 * 4 * pInfo_Header->biHeight; BYTE * pBuffer = new BYTE[bufSize]; int aHeight=pInfo_Header->biHeight; if(::GetDIBits(hMemDC, hBitmap, 0, aHeight, pBuffer,pBITMAPINFO, DIB_RGB_COLORS) == 0) { return ; } BYTE fr,fg,fb,lr,lg,lb; fr = GetRValue(m_ForegroundColor); fg = GetGValue(m_ForegroundColor); fb = GetBValue(m_ForegroundColor); lr = GetRValue(m_LowColor); lg = GetGValue(m_LowColor); lb = GetBValue(m_LowColor); int pitch=m_Width%4; for(int i=0;i<m_Height;i++) { int realPitch=i*pitch; for(int j=0;j<m_Width;j++) { UCHAR b=pBuffer[(i*m_Width+j)*3+realPitch]; UCHAR g=pBuffer[(i*m_Width+j)*3+1+realPitch]; UCHAR r=pBuffer[(i*m_Width+j)*3+2+realPitch]; //helpcolor=RGB(r,g,b); if(abs(r-fr)<=offr&&abs(g-fg)<=offg&&abs(b-fb)<=offb) { continue; } else { pBuffer[(i*m_Width+j)*3+realPitch] = lb; pBuffer[(i*m_Width+j)*3+1+realPitch] = lg; pBuffer[(i*m_Width+j)*3+2+realPitch] = lr; } } } //保存到文件并创建位图结构 BITMAPFILEHEADER bmfh; ZeroMemory(&bmfh,sizeof(BITMAPFILEHEADER)); *((char*)&bmfh.bfType) = 'B'; *(((char*)&bmfh.bfType) + 1) = 'M'; bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER); bmfh.bfSize = bmfh.bfOffBits + (m_Width * m_Height) * pInfo_Header->biBitCount / 8; CFile file; if(file.Open(g_CurrentExePath+_T("TCTEMP.bmp"),CFile::modeWrite|CFile::modeCreate)) { file.Write(&bmfh,sizeof(BITMAPFILEHEADER)); file.Write(&(pBITMAPINFO->bmiHeader),sizeof(BITMAPINFOHEADER));//.........这里部分代码省略.........
开发者ID:JohnWilliam1988,项目名称:AB,代码行数:101,
示例29: CRtoRGB SRGB CRtoRGB( COLORREF rc ) { return SRGB( GetRValue( rc ), GetGValue( rc ), GetBValue( rc ) ); }
开发者ID:dyao-vu,项目名称:meta-core,代码行数:4,
示例30: SetHLSAvoid CPalGroup::SetHLSA(COLORREF * crTarget, double dH, double dL, double dS, UINT8 aVal){ *crTarget = HLStoRGB(LimitHLS(dH), LimitHLS(dL), LimitHLS(dS)); *crTarget = RGB(ROUND_R(GetRValue(*crTarget)),ROUND_G(GetGValue(*crTarget)),ROUND_B(GetBValue(*crTarget))); *crTarget |= (UINT32)aVal << 24;}
开发者ID:DrewDos,项目名称:palmod,代码行数:6,
注:本文中的GetGValue函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ GetGWorldPixMap函数代码示例 C++ GetGUIDLow函数代码示例 |