当前位置: 首页>>代码示例>>C++>>正文


C++ TCanvas::CopyRect方法代码示例

本文整理汇总了C++中TCanvas::CopyRect方法的典型用法代码示例。如果您正苦于以下问题:C++ TCanvas::CopyRect方法的具体用法?C++ TCanvas::CopyRect怎么用?C++ TCanvas::CopyRect使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在TCanvas的用法示例。


在下文中一共展示了TCanvas::CopyRect方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: Do

//---------------------------------------------------------------------------
void __fastcall TClockAdjDlg::Do(short ds)
{
	if( m_Clock.Do(ds) ){
		TCanvas *pCanvas = m_pBitmapT->Canvas;
        TRect src;
        src.Left = 0; src.Right = m_pBitmapT->Width;
        src.Top = 0; src.Bottom = m_pBitmapT->Height;
        TRect trc = src;
		src.Bottom--;
        trc.Top++;
		pCanvas->CopyRect(trc, pCanvas, src);

		int sum = 0;
        int max = 0;
        int mp;
		int d;
        for( int i = 0; i < src.Right; i++ ){
			d = m_Clock.GetData(i);
			if( max < d ){
            	max = d;
                mp = i;
            }
            sum += d;

            d = (d - m_StgT.Sum) * 256 / m_StgT.VW;
            if( d >= 256 ) d = 255;
			if( d < 0 ) d = 0;
			pCanvas->Pixels[i][0] = m_tWaterColors[d];
        }
		pCanvas->Pixels[mp][0] = clRed;

        sum /= src.Right;
		m_StgT.Sum = (m_StgT.Sum + sum) / 2;
        m_StgT.Max = (m_StgT.Max + max) / 2;
        m_StgT.VW = m_StgT.Max - m_StgT.Sum;
        if( m_StgT.VW < 128 ) m_StgT.VW = 128;
		m_PointY++;
        m_PointRX++;
        if( m_PointRX >= PBoxT->Height ) m_PointRX = PBoxT->Height;
        PBoxTPaint(NULL);
    }
}
开发者ID:mygaldre,项目名称:mmvari,代码行数:43,代码来源:ClockAdj.cpp

示例2: DrawWater

//---------------------------------------------------------------------------
void __fastcall TRxViewDlg::DrawWater(BOOL fClear)
{
	if( m_pRxSet == NULL ) return;
	if( !m_pBitmapFFT ) return;

    TCanvas *pCanvas = m_pBitmapFFT->Canvas;

    int fo = m_pRxSet->m_pDem->m_CarrierFreq;
	if( !m_MouseDown ){
		int ww = m_WaterWidth / ((m_pRxSet->Is170()||m_pRxSet->IsMFSK()) ? 4 : 8);
		int cfo = fo;
        if( m_pRxSet->IsMFSK() ){
			int off = m_pRxSet->m_pDem->m_MFSK_BW/2;
			if( m_pRxSet->m_Mode == MODE_mfsk_L ){
				cfo -= off;
            }
            else {
				cfo += off;
            }
        }
		if( (cfo < (m_WaterLowFQ+ww)) || (cfo > (m_WaterHighFQ-ww)) ){
			CalcWaterCenter();
	    }
    }

    TRect rc;
   	rc.Left = 0; rc.Top = 0; rc.Right = m_fftXW; rc.Bottom = m_fftYW;
	if( fClear ){
	   	pCanvas->Brush->Color = MainVARI->m_tWaterColset[0].c;
   		pCanvas->Pen->Color = MainVARI->m_tWaterColset[0].c;
   		pCanvas->FillRect(rc);
        InitWater();
    }

	TRect trc = rc;
    rc.Bottom--;
	trc.Top++;
	pCanvas->CopyRect(trc, pCanvas, rc);
	int xo = ((m_WaterLowFQ+(MainVARI->m_FFTSampFreq/FFT_SIZE))*FFT_SIZE/MainVARI->m_FFTSampFreq) + 0.5;
	int xl = 0.5 + (fo - m_pRxSet->m_Speed - m_WaterLowFQ) * m_fftXW / m_WaterWidth;
	int xh = 0.5 + (fo + m_pRxSet->m_Speed - m_WaterLowFQ) * m_fftXW / m_WaterWidth;
   	int x, y, xx;
	int sum = 0;
    int max = 0;
    int wmax = 0;
    double k = 256.0 / m_StgWater.VW;
   	for( x = 0; x < m_fftXW; x++ ){
		xx = xo + (x * m_FFTWindow / m_fftXW);
        y = MainVARI->m_fftout[xx];
        if( max < y ) max = y;
		if( (x >= xl) && (x <= xh) ){
            if( wmax < y ) wmax = y;
        }
		sum += y;

        y = (y - m_StgWater.Sum) * k;
		if( y < 0 ) y = 0;
        if( y >= 256 ) y = 255;

        pCanvas->Pixels[x][0] = MainVARI->m_tWaterColors[y];
   	}
    sum /= m_fftXW;
	if( (wmax-sum) >= 320 ){
       	max = wmax;
    }
	m_StgWater.Sum = (m_StgWater.Sum + sum) / 2;
    m_StgWater.Max = (m_StgWater.Max + max) / 2;
    m_StgWater.VW = m_StgWater.Max - m_StgWater.Sum;
	int low, high;
	if( m_pRxSet->m_pFFT->m_FFTGain ){
       	low = 5120; high = 7000;
    }
    else {
       	low = 6000; high = 6000;
    }
    if( MainVARI->m_TX == txINTERNAL ) high = 100000;
    if( m_StgWater.VW < low ) m_StgWater.VW = low;
    if( m_StgWater.VW > high ) m_StgWater.VW = high;
}
开发者ID:mygaldre,项目名称:mmvari,代码行数:80,代码来源:RxView.cpp

示例3: TimerTimer

//---------------------------------------------------------------------
void __fastcall TClockAdjDlg::TimerTimer(TObject *Sender)
{
	if( pBitmap == NULL ) return;
	if( pDem == NULL ) return;
	if( pTick == NULL ) return;

	int *p = pTick->GetData();
	if( p == NULL ) return;

	TCanvas *tp = pBitmap->Canvas;

	int mx = -MAXINT;
	int mi = MAXINT;
	int x, xx, d;
	double k1 = 16384.0/double(m_agcMax - m_agcMin);
	double k2;
	if( SBAGC->Down ){
		k2 = 128.0 / 16384.0;
	}
	else {
		k2 = (128.0 * (s_Gain & 0x00ff)) / (4096 * 16);
	}
	int ax = -1;
	for( xx = 0; xx < pTick->m_Samp; xx++ ){
		int xv = xx + m_rBase;
		x = fmod(xv, m_Samp);
		x = x * pBitmap->Width / m_Samp;
		if( ax != x ){
			ax = x;
			if( !x ){
				if( m_MaxD ){
					tp->Pixels[m_MaxP][0] = clRed;
				}
				m_MaxD = 0;
				m_MaxP = 0;
				TRect rc;
				rc.Left = 0;
				rc.Right = pBitmap->Width - 1;
				rc.Top = 0;
				rc.Bottom = pBitmap->Height - 2;
				TRect src(rc);
				src.Bottom--;
				rc.Top++;
				tp->CopyRect(rc, tp, src);
			}
			d = p[xx];
			if( m_MaxD < d ){
				m_MaxD = d;
				m_MaxP = x;
			}
			if( mx < d ) mx = d;
			if( mi > d ) mi = d;
			if( SBAGC->Down ){
				d -= m_agcMin;
				if( m_agcMax > 0 ) d = double(d) * k1;
			}
			d = double(d) * k2;

			if( d >= 128 ) d = 127;
			if( d <= 0 ) d = 0;
			tp->Pixels[x][0] = TColor(ColorTable[127-d]);
		}
	}
	m_rBase += pTick->m_Samp;
#if 0
	for( x = 0; x < XR; x++){
		xx = (x * pTick->m_Samp)/pBitmap->Width;
		d = p[xx];
		if( mx < d ) mx = d;
		if( mi > d ) mi = d;
		if( SBAGC->Down ){
			d -= m_agcMin;
			if( m_agcMax > 0 ) d = double(d) * k1;
		}
		d = double(d) * k2;

		if( d >= 128 ) d = 127;
		if( d <= 0 ) d = 0;
		tp->Pixels[x][0] = TColor(ColorTable[127-d]);
	}
#endif
	m_agcSumMax -= m_agcMax;
	m_agcSumMax += mx;
	if( m_agcSumMax < (4096*AGCAVG) ) m_agcSumMax = (4096*AGCAVG);
	m_agcMax = m_agcSumMax / AGCAVG;
	m_agcMin = mi;
	if( m_agcMin > 2048 ) m_agcMin = 2048;
	m_PointY++;
	PaintBox->Canvas->Draw(0, 0, (TGraphic*)pBitmap);
	PaintCursor();
}
开发者ID:mygaldre,项目名称:mmsstv,代码行数:92,代码来源:ClockAdj.cpp


注:本文中的TCanvas::CopyRect方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。