本文整理汇总了C++中CBCGPRect::OffsetRect方法的典型用法代码示例。如果您正苦于以下问题:C++ CBCGPRect::OffsetRect方法的具体用法?C++ CBCGPRect::OffsetRect怎么用?C++ CBCGPRect::OffsetRect使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CBCGPRect
的用法示例。
在下文中一共展示了CBCGPRect::OffsetRect方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnDraw
//*******************************************************************************
void CBCGPTextGaugeImpl::OnDraw(CBCGPGraphicsManager* pGM, const CBCGPRect& /*rectClip*/, DWORD dwFlags)
{
ASSERT_VALID(pGM);
if (m_rect.IsRectEmpty() || !m_bIsVisible || m_strText.IsEmpty())
{
return;
}
if ((dwFlags & m_DefaultDrawFlags) == 0)
{
return;
}
CBCGPRect rect = m_rect;
if (m_bIsSubGauge)
{
rect.OffsetRect(-m_ptScrollOffset);
}
pGM->FillRectangle(rect, GetFillBrush ());
const CBCGPBrush& br = m_bOff ? m_brTextLight : m_brText;
CreateResources(CBCGPBrush(), FALSE);
pGM->DrawText(m_strText, rect, m_textFormat, br);
pGM->DrawRectangle(rect, GetOutlineBrush (), GetScaleRatioMid());
SetDirty(FALSE);
}
示例2: DrawTextWidthShadow
void CBCGPBaseTreeMapNode::DrawTextWidthShadow(CBCGPGraphicsManager* pGM, const CString& str, const CBCGPRect& rect, const CBCGPBrush& br, const CBCGPTextFormat& tf)
{
ASSERT_VALID(pGM);
CBCGPSize sizeText = pGM->GetTextSize(str, tf);
if (sizeText.cx > rect.Width() || sizeText.cy > rect.Height())
{
return;
}
CBCGPRect rectShadow = rect;
rectShadow.OffsetRect(1, 1);
pGM->DrawText(str, rectShadow, tf, CBCGPBrush(CBCGPColor::Black));
pGM->DrawText(str, rect, tf, br);
}
示例3: HitTestValue
//*******************************************************************************
BOOL CBCGPLinearGaugeImpl::HitTestValue(const CBCGPPoint& pt, double& dblValue, int nScale, BOOL bInsideGauge) const
{
CBCGPGaugeScaleObject* pScale = GetScale(nScale);
if (pScale == NULL)
{
ASSERT(FALSE);
return FALSE;
}
CBCGPRect rect = m_rect;
rect.OffsetRect(-m_ptScrollOffset);
if (m_bIsVertical)
{
rect.DeflateRect((pScale->m_dblOffsetFromFrame + m_nFrameSize) * m_sizeScaleRatio.cx, m_sizeMaxLabel.cy / 2 + (m_nFrameSize + 1) * m_sizeScaleRatio.cy);
}
else
{
rect.DeflateRect(m_sizeMaxLabel.cx / 2 + (m_nFrameSize + 1) * m_sizeScaleRatio.cx, (pScale->m_dblOffsetFromFrame + m_nFrameSize) * m_sizeScaleRatio.cy);
}
if (bInsideGauge && !rect.PtInRect(pt))
{
return FALSE;
}
if (m_bIsVertical)
{
const double dblTotalSize = rect.Height();
dblValue = pScale->m_dblStart + (rect.bottom - pt.y) * fabs(pScale->m_dblFinish - pScale->m_dblStart) / dblTotalSize;
}
else
{
const double dblTotalSize = rect.Width();
dblValue = pScale->m_dblStart + (pt.x - rect.left) * fabs(pScale->m_dblFinish - pScale->m_dblStart) / dblTotalSize;
}
return TRUE;
}
示例4: OnDraw
//.........这里部分代码省略.........
double angleFinishSin = sin(dblFinishAngleRad);
pItem->m_Shape.SetStart(
CBCGPPoint(center.x + angleStartCos * radius, center.y - angleStartSin * radius));
pItem->m_Shape.AddArc(
CBCGPPoint(center.x + angleFinishCos * radius, center.y - angleFinishSin * radius),
CBCGPSize(radius, radius), dblStartAngle > dblFinishAngle, FALSE);
pItem->m_Shape.AddLine(
CBCGPPoint(center.x + angleFinishCos * radiusSmall, center.y - angleFinishSin * radiusSmall));
pItem->m_Shape.AddArc(
CBCGPPoint(center.x + angleStartCos * radiusSmall, center.y - angleStartSin * radiusSmall),
CBCGPSize(radiusSmall, radiusSmall), dblStartAngle < dblFinishAngle, FALSE);
pItem->m_ptCenter = CBCGPPoint(
center.x + cos(dblMiddleAngleRad) * 2 * radius / 3,
center.y - sin(dblMiddleAngleRad) * 2 * radius / 3);
dblStartAngle = dblFinishAngle;
}
else
{
pItem->m_Shape.SetStart(center);
pItem->m_Shape.AddLine(center);
pGM->CombineGeometry(pItem->m_Shape, pItem->m_Shape, CBCGPEllipseGeometry(CBCGPEllipse(center, radiusSmall, radiusSmall)), RGN_OR);
pItem->m_ptCenter = center;
}
}
}
CBCGPEllipse ellipseInt(center, radiusSmall, radiusSmall);
CBCGPRect rectShadow = rect;
rectShadow.OffsetRect(m_nShadowDepth, m_nShadowDepth);
if (!m_bHasCenterButton && m_pCtrl->GetSafeHwnd() != NULL && (m_pCtrl->GetExStyle() & WS_EX_LAYERED))
{
if (m_nShadowDepth > 0)
{
CBCGPEllipseGeometry egShadow(rectShadow);
CBCGPPoint centerShadow = center;
centerShadow.x += m_nShadowDepth;
centerShadow.y += m_nShadowDepth;
CBCGPEllipse ellipseIntShadow(centerShadow, radiusSmall, radiusSmall);
CBCGPEllipseGeometry egInternalShadow(ellipseIntShadow);
CBCGPComplexGeometry shapeShadow;
pGM->CombineGeometry(shapeShadow, egShadow, egInternalShadow, RGN_DIFF);
pGM->FillGeometry(shapeShadow, m_brShadow);
}
CBCGPEllipseGeometry eg(rect);
CBCGPEllipseGeometry egInternal(ellipseInt);
CBCGPComplexGeometry shape;
pGM->CombineGeometry(shape, eg, egInternal, RGN_DIFF);
pGM->FillGeometry(shape, m_brFill);
}
else
{
if (m_nShadowDepth > 0)
示例5: OnDrawShape
//*******************************************************************************
void CBCGPChartObject::OnDrawShape(CBCGPGraphicsManager* pGM, const CBCGPRect& /*rectDiagram*/)
{
ASSERT_VALID(this);
if (m_rectScreen.IsRectNull() || m_rectScreen.IsRectEmpty())
{
return;
}
CBCGPRect rectShape = m_rectScreen;
rectShape.Normalize();
if (!m_format.m_brFillColor.IsEmpty())
{
if (m_dblShadowDepth > 0. && pGM->IsSupported(BCGP_GRAPHICS_MANAGER_COLOR_OPACITY))
{
CBCGPRect rectShadow = rectShape;
rectShadow.OffsetRect(m_dblShadowDepth, m_dblShadowDepth);
CBCGPGeometry geometryShadow;
if (!m_szCornerRadius.IsNull())
{
pGM->CombineGeometry(geometryShadow,
CBCGPRoundedRectangleGeometry(CBCGPRoundedRect(rectShadow, m_szCornerRadius.cx, m_szCornerRadius.cy)),
CBCGPRoundedRectangleGeometry(CBCGPRoundedRect(rectShape, m_szCornerRadius.cx, m_szCornerRadius.cy)),
RGN_DIFF);
}
else
{
pGM->CombineGeometry(geometryShadow,
CBCGPRectangleGeometry(rectShadow),
CBCGPRectangleGeometry(rectShape),
RGN_DIFF);
}
pGM->FillGeometry(geometryShadow, m_brShadow);
}
if (!m_szCornerRadius.IsNull())
{
pGM->FillRoundedRectangle(CBCGPRoundedRect(rectShape, m_szCornerRadius.cx, m_szCornerRadius.cy), m_format.m_brFillColor);
}
else
{
pGM->FillRectangle(rectShape, m_format.m_brFillColor);
}
}
if (!m_format.m_outlineFormat.m_brLineColor.IsEmpty())
{
if (!m_szCornerRadius.IsNull())
{
pGM->DrawRoundedRectangle(CBCGPRoundedRect(rectShape, m_szCornerRadius.cx, m_szCornerRadius.cy), m_format.m_outlineFormat.m_brLineColor,
m_format.m_outlineFormat.GetLineWidth(TRUE),
&m_format.m_outlineFormat.m_strokeStyle);
}
else
{
pGM->DrawRectangle(rectShape, m_format.m_outlineFormat.m_brLineColor,
m_format.m_outlineFormat.GetLineWidth(TRUE),
&m_format.m_outlineFormat.m_strokeStyle);
}
}
}
示例6: CreatePointerPoints
//*******************************************************************************
void CBCGPKnob::CreatePointerPoints(double dblRadius,
CBCGPPointsArray& arPoints,
int nPointerIndex, BOOL bShadow)
{
if (m_rect.IsRectEmpty())
{
return;
}
CBCGPRect rect = m_rect;
CBCGPKnobPointer* pData = DYNAMIC_DOWNCAST(CBCGPKnobPointer, m_arData[nPointerIndex]);
if (pData == NULL)
{
ASSERT(FALSE);
return;
}
CBCGPCircularGaugeScale* pScale = GetScale(pData->GetScale());
if (pScale == NULL)
{
ASSERT(FALSE);
return;
}
const double scaleRatio = GetScaleRatioMid();
double dblValue = pData->IsAnimated() ? pData->GetAnimatedValue() : pData->GetValue();
double dblOffset = bcg_clamp(pData->GetOffsetFromCenter(), 0.0, 1.0);
if (dblOffset == 0.0)
{
dblOffset = dblRadius * .5;
}
else
{
dblOffset = dblRadius * bcg_clamp(dblOffset, 0.5, 1.0);
}
double dblAngle = bcg_deg2rad(pScale->GetStartAngle()) - bcg_deg2rad(pScale->GetStartAngle() - pScale->GetFinishAngle()) * (dblValue - pScale->GetStart()) / (pScale->GetFinish() - pScale->GetStart());
dblAngle = bcg_normalize_rad (dblAngle);
if (bShadow)
{
rect.OffsetRect(2 * m_sizeScaleRatio.cx, 2 * m_sizeScaleRatio.cy);
}
CBCGPPoint center((rect.left + rect.right) / 2.0, (rect.top + rect.bottom) / 2.0);
const double angleCos = cos(dblAngle);
const double angleSin = sin(dblAngle);
double dblWidth = bcg_clamp(pData->GetWidth(), 0.0, dblRadius / 10.0);
const double dblPointerAngle = dblAngle - M_PI_2;
switch (pData->GetStyle())
{
case CBCGPKnobPointer::BCGP_KNOB_POINTER_HANDLE:
{
dblRadius -= .2 * scaleRatio;
double dblExtend = (dblRadius * .9);
double dblSize = dblRadius + dblExtend;
center.x -= angleCos * dblExtend;
center.y += angleSin * dblExtend;
if (dblWidth == 0.0)
{
dblWidth = dblRadius / 3.0;
}
dblWidth *= 0.5;
if (dblWidth < 1.0)
{
arPoints.Add(center);
arPoints.Add(CBCGPPoint(
center.x + angleCos * dblSize,
center.y - angleSin * dblSize));
}
else
{
double dblArrowLen = max(2.0 * dblWidth, 10.0 * scaleRatio);
dblSize -= dblArrowLen;
const double dx = cos(dblPointerAngle) * dblWidth;
const double dy = -sin(dblPointerAngle) * dblWidth;
arPoints.Add(CBCGPPoint(center.x + dx, center.y + dy));
arPoints.Add(CBCGPPoint(center.x - dx, center.y - dy));
const CBCGPPoint pt1(
center.x + angleCos * dblSize - dx,
center.y - angleSin * dblSize - dy);
const CBCGPPoint pt2(
center.x + angleCos * dblSize + dx,
center.y - angleSin * dblSize + dy);
//.........这里部分代码省略.........