//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "srcShape.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
//---------------------------FreeLine------------------------------
void CFreeLine::OnMouseDown(int x, int y)
{
m_pOrigin.x = x;
m_pOrigin.y = y;
}
void CFreeLine::OnMouseMove(int x,int y)
{
m_pCanvas->MoveTo(m_pOrigin.x, m_pOrigin.y);
m_pCanvas->LineTo(x, y);
m_pOrigin.x = x;
m_pOrigin.y = y;
}
void CFreeLine::OnMouseUp(int x, int y)
{
}
//-----------------------------Line----------------------------------------------
void CLine::OnMouseDown(int x,int y)
{
m_ptOrigin.x = m_ptMove.x = x;
m_ptOrigin.y = m_ptMove.y = y;
m_pCanvas->MoveTo(x,y);
CurMode = m_pCanvas->Pen->Mode;
m_pCanvas->Pen->Mode = pmXor;
//画出第一点
m_pCanvas->MoveTo(m_ptOrigin.x,m_ptOrigin.y);
m_pCanvas->LineTo(m_ptMove.x,m_ptMove.y);
}
void CLine::OnMouseMove(int x,int y)
{
m_pCanvas->Pen->Mode = pmXor;
//清除原来线条
m_pCanvas->MoveTo(m_ptOrigin.x,m_ptOrigin.y);
m_pCanvas->LineTo(m_ptMove.x,m_ptMove.y);
//绘出下一线条
m_pCanvas->MoveTo(m_ptOrigin.x,m_ptOrigin.y);
m_pCanvas->LineTo(x,y);
m_ptMove.x = x;
m_ptMove.y = y;
}
void CLine::OnMouseUp(int x,int y)
{
m_pCanvas->Pen->Mode = pmXor;
//清除原来线条
m_pCanvas->MoveTo(m_ptOrigin.x,m_ptOrigin.y);
m_pCanvas->LineTo(m_ptMove.x,m_ptMove.y);
//用当前设置绘出直线
m_pCanvas->Pen->Mode = CurMode;
m_pCanvas->MoveTo(m_ptOrigin.x,m_ptOrigin.y);
m_pCanvas->LineTo(x,y);
}
//-----------------------------PolyLIne------------------------------------------------
void CPolyline::OnMouseDown(int x,int y)
{
m_ptOrigin.x = x;
m_ptOrigin.y = y;
m_pCanvas->MoveTo(x,y);
}
void CPolyline::OnMouseMove(int x,int y)
{
m_pCanvas->LineTo(x,y);
}
void CPolyline::OnMouseUp(int x,int y)
{
m_pCanvas->LineTo(x,y);
}
//------------------------------Polygon-----------------------------------------------
void CPolygon::OnMouseDown(int x,int y)
{
}
void CPolygon::OnMouseMove(int x,int y)
{
}
void CPolygon::OnMouseUp(int x,int y)
{
m_pCanvas->MoveTo(m_ptOrigin.x,m_ptOrigin.y);
m_pCanvas->LineTo(x,y);
}
//-----------------------------Rectangle------------------------------------------------
void CRectangle::OnMouseDown(int x,int y)
{
m_ptOrigin.x = x;
m_ptOrigin.y = y;
m_ptMove.x = x;
m_ptMove.y = y;
CurMode = m_pCanvas->Pen->Mode;
m_pCanvas->Brush->Style = bsSolid;
m_pCanvas->Brush->Color = m_pCanvas->Pen->Color;
m_pCanvas->Pen->Mode = pmXor;
m_pCanvas->Rectangle(m_ptOrigin.x,m_ptOrigin.y,m_ptMove.x,m_ptMove.y);
}
void CRectangle::OnMouseMove(int x,int y)
{
m_pCanvas->Pen->Mode = pmXor;
m_pCanvas->Rectangle(m_ptOrigin.x,m_ptOrigin.y,m_ptMove.x,m_ptMove.y);
m_ptMove.x = x;
m_ptMove.y = y;
m_pCanvas->Rectangle(m_ptOrigin.x,m_ptOrigin.y,m_ptMove.x,m_ptMove.y);
}
void CRectangle::OnMouseUp(int x, int y)
{
m_pCanvas->Pen->Mode = pmXor;
m_pCanvas->Rectangle(m_ptOrigin.x,m_ptOrigin.y,m_ptMove.x,m_ptMove.y);
//
m_pCanvas->Pen->Mode = CurMode;
m_pCanvas->Rectangle(m_ptOrigin.x,m_ptOrigin.y, x,y);
}
//-----------------------------RoundRect------------------------------------------------
void CRoundRect::OnMouseDown(int x,int y)
{
m_ptOrigin.x = x;
m_ptOrigin.y = y;
m_ptMove.x = x;
m_ptMove.y = y;
CurMode = m_pCanvas->Pen->Mode;
m_pCanvas->Pen->Mode = pmXor;
m_pCanvas->RoundRect(m_ptOrigin.x,m_ptOrigin.y,m_ptMove.x,m_ptMove.y,4,4);
}
void CRoundRect::OnMouseMove(int x,int y)
{
m_pCanvas->Pen->Mode = pmXor;
m_pCanvas->RoundRect(m_ptOrigin.x,m_ptOrigin.y,m_ptMove.x,m_ptMove.y,4,4);
m_ptMove.x = x;
m_ptMove.y = y;
m_pCanvas->RoundRect(m_ptOrigin.x,m_ptOrigin.y,m_ptMove.x,m_ptMove.y,4,4);
m_pCanvas->Pen->Mode = CurMode;
}
void CRoundRect::OnMouseUp(int x, int y)
{
m_pCanvas->Pen->Mode = pmXor;
m_pCanvas->RoundRect(m_ptOrigin.x,m_ptOrigin.y,m_ptMove.x,m_ptMove.y,4,4);
m_pCanvas->Pen->Mode = CurMode;
m_pCanvas->RoundRect(m_ptOrigin.x,m_ptOrigin.y, x,y,4,4);
}
//-----------------------------Ellipse------------------------------------------------
void CEllipse::OnMouseDown(int x,int y)
{
m_ptOrigin.x = x;
m_ptOrigin.y = y;
m_ptMove.x = x;
m_ptMove.y = y;
CurMode = m_pCanvas->Pen->Mode;
m_pCanvas->Brush->Style = bsSolid;
m_pCanvas->Brush->Color = m_pCanvas->Pen->Color;
m_pCanvas->Pen->Mode = pmXor;
m_pCanvas->Ellipse(m_ptOrigin.x,m_ptOrigin.y,m_ptMove.x,m_ptMove.y);
}
void CEllipse::OnMouseMove(int x,int y)
{
m_pCanvas->Pen->Mode = pmXor;
m_pCanvas->Ellipse(m_ptOrigin.x,m_ptOrigin.y,m_ptMove.x,m_ptMove.y);
m_ptMove.x = x;
m_ptMove.y = y;
m_pCanvas->Ellipse(m_ptOrigin.x,m_ptOrigin.y,m_ptMove.x,m_ptMove.y);
m_pCanvas->Pen->Mode = CurMode;
}
void CEllipse::OnMouseUp(int x, int y)
{
m_pCanvas->Pen->Mode = pmXor;
m_pCanvas->Ellipse(m_ptOrigin.x,m_ptOrigin.y,m_ptMove.x,m_ptMove.y);
//
m_pCanvas->Pen->Mode = CurMode;
m_pCanvas->Ellipse(m_ptOrigin.x,m_ptOrigin.y, x,y);
}
//-----------------------------FloodFill------------------------------------------------
void CFloodFill::OnMouseDown(int x, int y)
{
m_pCanvas->FloodFill(x, y,m_pCanvas->Pixels[x][y], fsSurface);
}
//----------------------------FrameRect-------------------------------------------------
void CFrameRect::OnMouseDown(int x,int y)
{
points[0].x = x;
points[0].y = y;
points[1].x = x;
points[1].y = y;
points[2].x = x;
points[2].y = y;
points[3].x = x;
points[3].y = y;
points[4].x = x;
points[4].y = y;
CurMode = m_pCanvas->Pen->Mode;
m_pCanvas->Pen->Mode = pmXor;
m_pCanvas->Polyline(points,4);
}
void CFrameRect::OnMouseMove(int x,int y)
{
m_pCanvas->Pen->Mode = pmXor;
m_pCanvas->Polyline(points,4);
points[1].x = x;
points[1].y = points[0].y;
points[2].x = x;
points[2].y = y;
points[3].x = points[0].x;
points[3].y = y;
points[4].x = points[0].x;
points[4].y = points[0].y;
m_pCanvas->Polyline(points,4);
}
void CFrameRect::OnMouseUp(int x, int y)
{
//
m_pCanvas->Pen->Mode = pmXor;
m_pCanvas->Polyline(points,4);
//
m_pCanvas->Pen->Mode = CurMode;
m_pCanvas->Polyline(points,4);
}
//-----------------------------Circle------------------------------------------------
void CCircle::OnMouseDown(int x,int y)
{
m_ptOrigin.x = x;
m_ptOrigin.y = y;
m_ptMove.x = x;
m_ptMove.y = y;
CurMode = m_pCanvas->Pen->Mode;
m_pCanvas->Brush->Style = bsSolid;
m_pCanvas->Brush->Color = m_pCanvas->Pen->Color;
m_pCanvas->Pen->Mode = pmXor;
m_pCanvas->Ellipse(m_ptOrigin.x,m_ptOrigin.y,m_ptMove.x,m_ptMove.y);
}
void CCircle::OnMouseMove(int x,int y)
{
int dx, dy;
m_pCanvas->Pen->Mode = pmXor;
m_pCanvas->Ellipse(m_ptOrigin.x,m_ptOrigin.y,m_ptMove.x,m_ptMove.y);
dx = x - m_ptOrigin.x;
dy = y - m_ptOrigin.y;
if( dx > dy )
{
m_ptMove.x = m_ptOrigin.x + dy;
m_ptMove.y = m_ptOrigin.y + dy;
}
else if( dx < dy )
{
m_ptMove.x = m_ptOrigin.x + dx;
m_ptMove.y = m_ptOrigin.y + dx;
}
else
{
m_ptMove.x = x;
m_ptMove.y = y;
}
m_pCanvas->Ellipse(m_ptOrigin.x,m_ptOrigin.y,m_ptMove.x,m_ptMove.y);
m_pCanvas->Pen->Mode = CurMode;
}
void CCircle::OnMouseUp(int x, int y)
{
m_pCanvas->Pen->Mode = pmXor;
m_pCanvas->Ellipse(m_ptOrigin.x,m_ptOrigin.y,m_ptMove.x,m_ptMove.y);
//
m_pCanvas->Pen->Mode = CurMode;
m_pCanvas->Ellipse(m_ptOrigin