Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
diploma.doc
Скачиваний:
14
Добавлен:
31.08.2019
Размер:
1.03 Mб
Скачать

Додаток б. Файл реалізації Win2Dlg.Cpp

// Win2Dlg.cpp : implementation file

//

#include "stdafx.h"

#include "ATriangulation.h"

#include "Win2Dlg.h"

//использование переменных с первого диалогового окна

extern int N;

extern double x, y;

extern double sizeX, sizeY;

extern double *X, *Y;

extern int Index[3];

CString strx;

// CWin2Dlg dialog

IMPLEMENT_DYNAMIC(CWin2Dlg, CDialog)

CWin2Dlg::CWin2Dlg(CWnd* pParent /*=NULL*/)

: CDialog(CWin2Dlg::IDD, pParent) { }

Cwin2Dlg::~CWin2Dlg() { }

void CWin2Dlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CWin2Dlg, CDialog)

ON_WM_PAINT()

//ON_WM_CTLCOLOR()

ON_WM_CLOSE()

END_MESSAGE_MAP()

// CWin2Dlg message handlers

void CWin2Dlg::OnPaint()

{

double koef=1;

double rsX = sizeX * 100;

double rsY = sizeY * 100;

//изменение размеров окна и координатной системы

if(rsX > 640) {

koef = rsX / 640;

rsX /= koef; rsY /= koef;

}

else

if(rsY > 480) {

koef = rsX / 480;

rsX /= koef; rsY /= koef;

}

//изменение положения и размеров окна

MoveWindow(100, 100, rsX+90, rsY+70, TRUE);

CPaintDC dc(this); // Получить контекст устройства

//рисование координатной системы

dc.Rectangle(40, 30, rsX+40, rsY+30);

//рисование цели измерения и линий к точкам, которые использовались

if(x!=0 && y!=0) {

dc.MoveTo(x*100/koef+40, y*100/koef+30);

dc.LineTo(X[Index[0]]*100/koef+40, Y[Index[0]]*100/koef+30);

dc.MoveTo(x*100/koef+40, y*100/koef+30);

dc.LineTo(X[Index[1]]*100/koef+40, Y[Index[1]]*100/koef+30);

dc.MoveTo(x*100/koef+40, y*100/koef+30);

dc.LineTo(X[Index[2]]*100/koef+40, Y[Index[2]]*100/koef+30);

dc.Ellipse(x*100/koef+30, y*100/koef+20, x*100/koef+50, y*100/koef+40);

strx.Format("X=%.2f; Y=%.2f", x, y);

dc.TextOutA(x*100/koef, y*100/koef, strx);

}

//заполнение координатной системы положениями опорных точек

for(int i=0; i<N; i++) {

dc.Rectangle(X[i]*100/koef+35, Y[i]*100/koef+25, X[i]*100/koef+45, Y[i]*100/koef+35);

strx.Format("%d(%.2f; %.2f)", i, X[i], Y[i]);

dc.TextOutA(X[i]*100/koef, Y[i]*100/koef, strx);

}

}

void CWin2Dlg::OnClose()

{

DestroyWindow();

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]