Скачиваний:
21
Добавлен:
01.05.2014
Размер:
3.28 Кб
Скачать
// 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