本文整理汇总了C++中LKSurface::Circle方法的典型用法代码示例。如果您正苦于以下问题:C++ LKSurface::Circle方法的具体用法?C++ LKSurface::Circle怎么用?C++ LKSurface::Circle使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LKSurface
的用法示例。
在下文中一共展示了LKSurface::Circle方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DrawStartEndSector
void MapWindow::DrawStartEndSector(LKSurface& Surface, const RECT& rc,
const POINT &Start, const POINT &End, int Index,
int Type, double Radius) {
double tmp;
LKSurface::OldPen oldpen;
LKSurface::OldBrush oldbrush;
switch (Type) {
case 0: // CIRCLE
tmp = Radius * zoom.ResScaleOverDistanceModify();
oldpen = Surface.SelectObject(hpStartFinishThick);
oldbrush = Surface.SelectObject(LKBrush_Hollow);
Surface.Circle(WayPointList[Index].Screen.x,
WayPointList[Index].Screen.y, (int) tmp, rc, false, false);
Surface.SelectObject(LKPen_Red_N1);
Surface.Circle(WayPointList[Index].Screen.x,
WayPointList[Index].Screen.y, (int) tmp, rc, false, false);
Surface.SelectObject(oldpen);
Surface.SelectObject(oldbrush);
break;
case 1: // LINE
Surface.DrawLine(PEN_SOLID, NIBLSCALE(5), End, Start, taskcolor, rc);
Surface.DrawLine(PEN_SOLID, NIBLSCALE(1), End, Start, LKColor(255, 0, 0), rc);
break;
case 2: // SECTOR
Surface.DrawLine(PEN_SOLID, NIBLSCALE(5), WayPointList[Index].Screen,
Start, taskcolor, rc);
Surface.DrawLine(PEN_SOLID, NIBLSCALE(5), WayPointList[Index].Screen,
End, taskcolor, rc);
Surface.DrawLine(PEN_SOLID, NIBLSCALE(1), WayPointList[Index].Screen,
Start, LKColor(255, 0, 0), rc);
Surface.DrawLine(PEN_SOLID, NIBLSCALE(1), WayPointList[Index].Screen,
End, LKColor(255, 0, 0), rc);
break;
}
}
示例2: DrawFAIOptimizer
void MapWindow::DrawFAIOptimizer(LKSurface& Surface, const RECT& rc, const POINT &Orig_Aircraft)
{
LKColor whitecolor = RGB_WHITE;
LKColor origcolor = Surface.SetTextColor(whitecolor);
LKPen oldpen = Surface.SelectObject(hpStartFinishThick);
LKBrush oldbrush = Surface.SelectObject(LKBrush_Hollow);
/********************************************************************/
unsigned int ui;
double lat1 = 0;
double lon1 = 0;
double lat2 = 0;
double lon2 = 0;
BOOL bFlat = false;
BOOL bFAI = false;
double fDist, fAngle;
LockTaskData(); // protect from external task changes
bFAI = CContestMgr::Instance().FAI();
CContestMgr::CResult result = CContestMgr::Instance().Result( CContestMgr::TYPE_FAI_TRIANGLE, true);
const CPointGPSArray &points = result.PointArray();
unsigned int iSize = points.size();
CContestMgr::TType sType = result.Type();
double lat_CP = CContestMgr::Instance().GetClosingPoint().Latitude();
double lon_CP = CContestMgr::Instance().GetClosingPoint().Longitude();
double fFAIDistance = result.Distance();
UnlockTaskData(); // protect from external task changes
if((sType == CContestMgr::TYPE_FAI_TRIANGLE) && iSize>0)
{
LKASSERT(iSize<100);
for(ui=0; ui< iSize-1; ui++)
{
LockTaskData(); // protect from external task changes
lat1 = points[ui].Latitude();
lon1 = points[ui].Longitude();
lat2 = points[ui+1].Latitude();
lon2 = points[ui+1].Longitude();
UnlockTaskData();
DistanceBearing(lat1, lon1, lat2, lon2, &fDist, &fAngle);
#if BUGSTOP
LKASSERT(fFAIDistance!=0);
#endif
if (fFAIDistance==0) fFAIDistance=0.1;
if(((fDist > FAI_MIN_DISTANCE_THRESHOLD) && (ui < 3) && !bFlat && (fDist/ fFAIDistance > 0.05)) )
{
LKColor rgbCol = RGB_BLUE;
switch(ui)
{
case 0: rgbCol = RGB_YELLOW; break;
case 1: rgbCol = RGB_CYAN ; break;
case 2: rgbCol = RGB_GREEN ; break;
default:
break;
}
RenderFAISector ( Surface, rc, lat1, lon1, lat2, lon2, 1, rgbCol );
RenderFAISector ( Surface, rc, lat1, lon1, lat2, lon2, 0, rgbCol );
}
if (fFAIDistance > 0) /* check if triangle is too flat for second sector */
if(fDist/ fFAIDistance > 0.45)
bFlat = true;
}
/*********************************************************/
if(ISPARAGLIDER && bFAI)
{
LKPen hpSectorPen(PEN_SOLID, IBLSCALE(2), FAI_SECTOR_COLOR );
LKPen hOldPen = Surface.SelectObject(hpSectorPen);
POINT Pt1;
MapWindow::LatLon2Screen(lon_CP, lat_CP, Pt1);
FindLatitudeLongitude(lat1, lon1, 0 , fFAIDistance* 0.20, &lat2, &lon2); /* 1000m destination circle */
int iRadius = (int)((lat2-lat1)*zoom.DrawScale());
Surface.Circle(Pt1.x, Pt1.y, iRadius , rc, true , false);
FindLatitudeLongitude(lat1, lon1, 0 , 500, &lat2, &lon2); /* 1000m destination circle */
iRadius = (int)((lat2-lat1)*zoom.DrawScale());
Surface.Circle(Pt1.x, Pt1.y, iRadius , rc, true , false);
Surface.SelectObject (hOldPen);
}
/*********************************************************/
}
/********************************************************************/
// restore original color
Surface.SetTextColor(origcolor);
Surface.SelectObject(oldpen);
Surface.SelectObject(oldbrush);
}