Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Алгоритм Киркпатрика-Зайделя / Source / Image
.cpp// Image.cpp: implementation of the CImage class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "CH_KS.h"
#include "Image.h"
#include "CH.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
TImage::TImage()
{
all_step=0;
cur_step=0;
cal_step=0;
hKnow = false;
hStepOn = false;
hDraw = false;
hCHP=false;
chp = 0;
hColor = RGB(0, 255, 0);
hPoints = true;
hScale = false;
hScaleX = hScaleY = 1.0;
hBestFit = false;
hNumbers = false;
hDiagram = false;
hAuto = false;
hInStepMode = false;
hInDemoMode = false;
hForwardDemo = false;
hBackDemo = false;
hIsPaused = false;
// hConvex = false;
// hBridges = false;
// hDiagramStep = false;
// hDiagramUnion = false;
// hDividingChain = false;
// hDividingChainStep = false;
hDelay = 1;
fr=false;
hDiagramColor = RGB(0, 0, 0);
// hDiagramCreated = false;
ns = 0;
nc = 0;
anc = 0;
hLeftDiagramColor = RGB(255, 0, 0);
hRightDiagramColor = RGB(0, 0, 255);
memset(&LogFont, 0, sizeof(LOGFONT));
LogFont.lfHeight = 12;
LogFont.lfWeight = FW_MEDIUM;
LogFont.lfItalic = 0;
LogFont.lfUnderline = 0;
LogFont.lfCharSet = RUSSIAN_CHARSET;
LogFont.lfOutPrecision = OUT_STROKE_PRECIS;
LogFont.lfClipPrecision = CLIP_STROKE_PRECIS;
LogFont.lfQuality = DEFAULT_QUALITY;
strcpy(LogFont.lfFaceName, "Arial");
//Font.CreateFontIndirect(&LogFont);
//hMem.SelectObject(&Font);
}
TImage::Initialize(CDC* pDC)
{
hMem.CreateCompatibleDC(pDC);
hBmp.CreateCompatibleBitmap(pDC, SIZEX, SIZEY);
hMem.SelectObject(&hBmp);
ClearImage();
}
TImage::ClearImage()
{
CBrush hWhite;
hWhite.CreateStockObject(WHITE_BRUSH);
hMem.FillRect(CRect(0, 0, SIZEX, SIZEY), &hWhite);
// hDiagramCreated = false;
}
TImage::ChangeBrush(int x)
{
CBrush hBrush;//(Color);
//hMem.SelectObject(pOldBrush);
//pOldBrush->DeleteObject();
//hBrush.CreateSolidBrush(Color);
hBrush.CreateStockObject(x);
pOldBrush = hMem.SelectObject(&hBrush);
//hMem.SelectObject(&hBrush);
//hMem.SelectObject(pOldBrush);
}
TImage::RestoreBrush()
{
hMem.SelectObject(pOldBrush);
}
TImage::Update(TMyPointVector& p)
{
CString hString;
// CBrush hBrush;
CFont Font;
CBrush hBrush(hColor);
pOldBrush = hMem.SelectObject(&hBrush);
// hBrush.CreateSolidBrush(hColor);
// hMem.SelectObject(&hBrush);
Font.CreateFontIndirect(&LogFont);
hMem.SelectObject(&Font);
if (hPoints)
for(int i = 0; i < p.N(); i++) {
hMem.Ellipse(p[i].x - 2, gr_y-p[i].y - 2, p[i].x + 3, gr_y-p[i].y + 3);
if (hNumbers) {
hString.Format("%d", i + 1);
hMem.TextOut(p[i].x + 2, gr_y-p[i].y + 2, hString);
}
}
//hMem.SelectObject(pOldBrush);
// hBrush.DeleteObject();
}
TImage::Paint(CDC* pDC)
{
pDC->StretchBlt(0, 0, SIZEX*hScaleX, SIZEY*hScaleY, &hMem, 0, 0, SIZEX, SIZEY, SRCCOPY);
}
TImage::~TImage()
{
}
Соседние файлы в папке Source