开发工具:
文件大小: 1mb
下载次数: 0
上传时间: 2010-06-14
详细说明: // 线段裁剪CSView.cpp : implementation of the CCSView class // #include "stdafx.h" #include "线段裁剪CS.h" #include "线段裁剪CSDoc.h" #include "线段裁剪CSView.h" #define left 200 //默认图形窗口 #define right 400 #define bottom 100 #define top 300 #define l 1 //区域编码 #define r 2 #define b 4 #define t 8 #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CCSView IMPLEMENT_DYN CREATE(CCSView, CView) BEGIN_MESSAGE_MAP(CCSView, CView) //{{AFX_MSG_MAP(CCSView) ON_WM_LBUTTONDOWN() ON_WM_RBUTTONDOWN() //}}AFX_MSG_MAP // Standard printing commands ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CCSView construction/destruction CCSView::CCSView() { // TODO: add construction code here } CCSView::~CCSView() { } BOOL CCSView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CView::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CCSView drawing void CCSView::OnDraw(CDC* pDC) { CCSDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); pDC->TextOut(150,1," 单击左键定线段起点,右击定线段终点"); pDC->TextOut(150,20,"线段的裁剪结果会自动显示"); // TODO: add draw code for native data here pDC->Rectangle(left,top,right,bottom); } ///////////////////////////////////////////////////////////////////////////// // CCSView printing BOOL CCSView::OnPreparePrinting(CPrintInfo* pInfo) { // default preparation return DoPreparePrinting(pInfo); } void CCSView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add extra initialization before printing } void CCSView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add cleanup after printing } ///////////////////////////////////////////////////////////////////////////// // CCSView diagnostics #ifdef _DEBUG void CCSView::AssertValid() const { CView::AssertValid(); } void CCSView::Dump(CDumpContext& dc) const { CView::Dump(dc); } CCSDoc* CCSView::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CCSDoc))); return (CCSDoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CCSView message handlers void CCSView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default origin=point; CView::OnLButtonDown(nFlags, point); } void encode(float x,float y,int &code) { int c=0; if(xright)c=c|r; if(ytop)c=c|t; code=c; } void CCSView::OnRButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default float x1,y1,x2,y2; x1=origin.x; y1=origin.y; x2=point.x; y2=point.y;//获取初始化线段的起点和终点 CsLine(x1,x2,y1,y2); CView::OnRButtonDown(nFlags, point); } int CCSView::CsLine(float x1, float x2, float y1, float y2) { CDC *pDC=GetDC(); int code1,code2,code; float x,y; encode(x1,y1,code1); encode(x2,y2,code2); while(code1!=0||code2!=0) { if(code1&code2)return 1;//线段在窗口外,返回 code=code1; if(code1==0)code=code2; if(l&code) { x=left; y=y1+(y2-y1)*(left-x1)/(x2-x1); } else if(r&code) { x=right; y=y1+(y2-y1)*(right-x1)/(x2-x1); } else if(b&code) { y=bottom; x=x1+(x2-x1)*(bottom-y1)/(y2-y1); } else if(t&code) { y=top; x=x1+(x2-x1)*(top-y1)/(y2-y1); } if(code==code1) { x1=x;y1=y;encode(x,y,code1); } else { x2=x;y2=y;encode(x,y,code2); } } pDC->MoveTo(x1,y1); pDC->LineTo(x2,y2); ReleaseDC(pDC); return 1; } ...展开收缩
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.