void CD3DScrollBar::GetMiniSize(int& Width,int& Height) { CD3DWnd::GetMiniSize(Width,Height); int Len=0; int MinWidth,MinHeight; CEasyRect Rect=GetCenterRect(); if(m_ScrollStyle==SCROLL_BAR_VERTICAL) { m_pDecButton->GetMiniSize(MinWidth,MinHeight); Width+=MinWidth; m_pTrackButton->GetMiniSize(MinWidth,MinHeight); Height+=MinHeight; Height+=Rect.Width()*2; } else { m_pDecButton->GetMiniSize(MinWidth,MinHeight); Height+=MinHeight; m_pTrackButton->GetMiniSize(MinWidth,MinHeight); Width+=MinWidth; Width+=Rect.Height()*2; } }
Mat charFeatures2(Mat in, int sizeData) { const int VERTICAL = 0; const int HORIZONTAL = 1; // cut the cetner, will afect 5% perices. Rect _rect = GetCenterRect(in); Mat tmpIn = CutTheRect(in, _rect); //Mat tmpIn = in.clone(); // Low data feature Mat lowData; resize(tmpIn, lowData, Size(sizeData, sizeData)); // Histogram features Mat vhist = ProjectedHistogram(lowData, VERTICAL); Mat hhist = ProjectedHistogram(lowData, HORIZONTAL); // Last 10 is the number of moments components int numCols = vhist.cols + hhist.cols + lowData.cols * lowData.cols; Mat out = Mat::zeros(1, numCols, CV_32F); // Asign values to // feature,ANN的样本特征为水平、垂直直方图和低分辨率图像所组成的矢量 int j = 0; for (int i = 0; i < vhist.cols; i++) { out.at<float>(j) = vhist.at<float>(i); j++; } for (int i = 0; i < hhist.cols; i++) { out.at<float>(j) = hhist.at<float>(i); j++; } for (int x = 0; x < lowData.cols; x++) { for (int y = 0; y < lowData.rows; y++) { out.at<float>(j) += (float)lowData.at <unsigned char>(x, y); j++; } } //std::cout << out << std::endl; return out; }
Mat features(Mat in, int sizeData) { //抠取中间区域 Rect _rect = GetCenterRect(in); Mat tmpIn = CutTheRect(in, _rect); // Mat tmpIn = in.clone(); // Low data feature Mat lowData; resize(tmpIn, lowData, Size(sizeData, sizeData)); // Histogram features Mat vhist = ProjectedHistogram(lowData, VERTICAL); Mat hhist = ProjectedHistogram(lowData, HORIZONTAL); // Last 10 is the number of moments components int numCols = vhist.cols + hhist.cols + lowData.cols * lowData.cols; Mat out = Mat::zeros(1, numCols, CV_32F); // Asign values to // feature,ANN的样本特征为水平、垂直直方图和低分辨率图像所组成的矢量 int j = 0; for (int i = 0; i < vhist.cols; i++) { out.at<float>(j) = vhist.at<float>(i); j++; } for (int i = 0; i < hhist.cols; i++) { out.at<float>(j) = hhist.at<float>(i); j++; } for (int x = 0; x < lowData.cols; x++) { for (int y = 0; y < lowData.rows; y++) { out.at<float>(j) += (float)lowData.at<unsigned char>(x, y); j++; } } // if(DEBUG) // cout << out << "\n===========================================\n"; return out; }
void CClipMonView::ReDrawBkBuffer() { if (!m_bUseBkBuffer) { return; } CSize szView = GetScrollViewSize(); if (szView.cx == 0 || szView.cy == 0) { return; } CRect rcClient; TxGetClientRect(rcClient); CRect rcViewShowBuffer(rcClient); rcViewShowBuffer.MoveToXY(0,0); rcViewShowBuffer.OffsetRect(GetScrollPos(SB_HORZ), GetScrollPos(SB_VERT)); CRect rcBk(0,0, m_szbmpBackBuffer.cx, m_szbmpBackBuffer.cy); rcBk = GetCenterRect(rcViewShowBuffer, rcBk); if (rcBk.left < 0) { rcBk.MoveToX(0); } if (rcBk.top < 0) { rcBk.MoveToY(0); } m_rcViewBkBuffer = rcBk; m_BkBufferlock.Lock(); ASSERT(m_pBmpBackBuffer != NULL); Graphics gc(m_pBmpBackBuffer); SolidBrush bkBrush(m_drawParam.bkColor); Rect rCet = CRect2Rect(CRect(0,0, rcBk.Width(), rcBk.Height())); gc.FillRectangle(&bkBrush, rCet); CRect rcView(0, 0, szView.cx, szView.cy); //calc In Bound Item int nBegin = (rcBk.top - rcView.top) / m_drawParam.nItemHeight; int nCount = rcBk.Height() /m_drawParam.nItemHeight +1; VECTMPITEM vData; g_monDataMgr.GetRangeData(nBegin, nCount, vData); nCount = vData.size(); if (nCount == 0) { return; } CTxListHeader& headerCtrl = GetListHeader(); int nTopPos = rcView.top + (nBegin * m_drawParam.nItemHeight)- rcBk.top; Gdiplus::StringFormat fmt; fmt.SetAlignment(StringAlignmentCenter); fmt.SetLineAlignment(StringAlignmentCenter); fmt.SetTrimming(StringTrimmingEllipsisCharacter); fmt.SetFormatFlags(StringFormatFlagsLineLimit|StringFormatFlagsNoWrap); Pen pen(g_globalInfo.viewSetting.clrSeparateLine, 1.0); Rect rRowBk(0, nTopPos, rcBk.Width(), m_drawParam.nItemHeight); for (int i = 0; i < nCount; i++) { ARGB clr = 0xff000000; ARGB clrBk = 0xffffffff; vData[i].GetMonColor(clr, clrBk); bkBrush.SetColor(clrBk); gc.FillRectangle(&bkBrush, rRowBk); int nLeftPos = 0-rcBk.left; CRect rcItem(nLeftPos,nTopPos, 0, nTopPos + m_drawParam.nItemHeight); for (int cIdx = 0; cIdx < m_ColSetting.m_vTmpCols.size(); cIdx++) { if (rcItem.left > rcBk.right) { break; } rcItem.right = rcItem.left + headerCtrl.GetHeaderWidth(cIdx); if (rcItem.right >= rcBk.left) { ENUM_MONTYPE nMonType = (ENUM_MONTYPE)(m_ColSetting.m_vTmpCols[cIdx].nPosInType); if (nMonType != MONTYPE_TIMEREMAIN) { CString strText = vData[i].GetValue(nMonType); GPDrawShadowTextSimple(gc, strText, rcItem, *m_drawParam.pFont, clr, 0, 2,2, &fmt); //GPDrawShadowText(gc, strText, rcItem, *m_drawParam.pFont, clr, 0x22000000,0,0,0,0,&fmt); } //draw separate line gc.DrawLine(&pen, rcItem.right-1, rcItem.top, rcItem.right-1, rcItem.bottom); } rcItem.OffsetRect(rcItem.Width(), 0); } gc.DrawLine(&pen, rcBk.left, rcItem.bottom-1, rcBk.right, rcItem.bottom-1); nTopPos += m_drawParam.nItemHeight; rRowBk.Offset(0, m_drawParam.nItemHeight); } m_BkBufferlock.Unlock(); }