• 大小: 3.6MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-10
  • 语言: C/C++
  • 标签: MFC  对话框  

资源简介

基于MFC单对话框实现梁友栋barsky算法的编程,可以实现同时裁剪多直线及其颜色,也可设置裁剪框的大小及位置

资源截图

代码片段和文件信息

// clipLiang.cpp: implementation of the clipLiang class.
//
//////////////////////////////////////////////////////////////////////

#include “stdafx.h“
#include “LiangClip.h“
#include “clipLiang.h“

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

clipLiang::clipLiang()
{

}

clipLiang::~clipLiang()
{

}

void clipLiang::swapOpoints()
{
point[0].x=left;
point[0].y=top;

point[1].x=right;
point[1].y=top;

point[2].x=right;
point[2].y=bottom;

point[3].x=left;
point[3].y=bottom;

point[4].x=left;
point[4].y=top;
}

void clipLiang::DDA(CDC *pDC int color)
{
swapOpoints();

for(int i=0;i<5;i++){
float k;
double dx=point[i].x-point[i+1].x;
double dy=point[i].y-point[i+1].y;

if(dx!=0)
{
k=dy/dx;
if(k>=-1&&k<=1)
{

if(point[i].x<=point[i+1].x){
int x;
float y=point[i].y;
for(x=point[i].x;x {
pDC->SetPixel(xint(y+0.5)color);
y=y+k;
}
}
else
{
int x;
float y=point[i+1].y;
for(x=point[i+1].x;x {
pDC->SetPixel(xint(y+0.5)color);
y=y+k;
}
}
}else{
if(point[i].y<=point[i+1].y)
{
int y;
float x=point[i].x;
for(y=point[i].y;y {
pDC->SetPixel(int(x+0.5)ycolor);
x=x+1/k;
}
}
else
{
int y;
float x=point[i+1].x;
for(y=point[i+1].y;y {
pDC->SetPixel(int(x+0.5)ycolor);
x=x+1/k;
}
}
}
}else{
int x=point[i].x;
if(point[i].y<=point[i+1].y)
{
for(int y=point[i].y;y pDC->SetPixel(xycolor);
}
}
else
{
for(int y=point[i+1].y;y pDC->SetPixel(xycolor);
}
}
}
}
}

void clipLiang::LBClip(CDC* pDC)
{
for(int i=0;i {
 float dxdyu1u2;
 int dx1dx2dy1dy2;
 u1=0.0;
 u2=1.0;
 dx1=points[i].x1;
     dy1=points[i].y1;
 dx2=points[i].x2;
 dy2=points[i].y2;

 dx=dx2-dx1;
 
 if(ClipTest(-dxdx1-left&u1&u2))  
if(ClipTest(dxright-dx1&u1&u2))
{
 dy=dy2-dy1;

 if(ClipTest(-dydy1-top&u1&u2))
 {
  if(ClipTest(dybottom-dy1&u1&u2))
  {
  
  if(u2<1.0)
  {
dx2=dx1+u2*dx;
dy2=dy1+u2*dy;
  }

if(u1>0.0)
{
dx1=dx1+u1*dx;
dy1=dy1+u1*dy;
}

CString str1str2str3str4;


str1.Format(“%d“dx1);
str2.Format(“%d“dy1);
str3.Format(“%d“dx2);
str4.Format(“%d“dy2);

pDC->TextOut(dx1-15dy1-15str1);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4865  2015-12-08 18:47  LiangClip\clipLiang.cpp

     文件        977  2015-12-08 17:23  LiangClip\clipLiang.h

     文件      17811  2015-12-08 18:47  LiangClip\Debug\clipLiang.obj

     文件          0  2015-12-08 19:14  LiangClip\Debug\clipLiang.sbr

     文件    5129216  2015-12-11 20:31  LiangClip\Debug\LiangClip.bsc

     文件     127025  2015-12-11 20:31  LiangClip\Debug\LiangClip.exe

     文件     324900  2015-12-11 20:31  LiangClip\Debug\LiangClip.ilk

     文件      23167  2015-12-08 22:58  LiangClip\Debug\LiangClip.obj

     文件    6946432  2015-12-06 18:28  LiangClip\Debug\LiangClip.pch

     文件     500736  2015-12-11 20:31  LiangClip\Debug\LiangClip.pdb

     文件       8420  2015-12-11 20:28  LiangClip\Debug\LiangClip.res

     文件          0  2015-12-08 22:58  LiangClip\Debug\LiangClip.sbr

     文件      12791  2015-12-11 20:28  LiangClip\Debug\liangClipDlg.obj

     文件          0  2015-12-11 20:28  LiangClip\Debug\liangClipDlg.sbr

     文件      14874  2015-12-06 18:28  LiangClip\Debug\LiangClipDoc.obj

     文件          0  2015-12-06 18:28  LiangClip\Debug\LiangClipDoc.sbr

     文件      24230  2015-12-11 20:31  LiangClip\Debug\LiangClipView.obj

     文件          0  2015-12-11 20:31  LiangClip\Debug\LiangClipView.sbr

     文件      19927  2015-12-06 18:28  LiangClip\Debug\MainFrm.obj

     文件          0  2015-12-06 18:28  LiangClip\Debug\MainFrm.sbr

     文件       3988  2015-12-06 18:28  LiangClip\Debug\Points.obj

     文件          0  2015-12-06 18:28  LiangClip\Debug\Points.sbr

     文件     105642  2015-12-06 18:28  LiangClip\Debug\StdAfx.obj

     文件    1376078  2015-12-06 18:28  LiangClip\Debug\StdAfx.sbr

     文件     230400  2015-12-11 20:31  LiangClip\Debug\vc60.idb

     文件     372736  2015-12-11 20:31  LiangClip\Debug\vc60.pdb

     文件      46260  2015-12-11 20:28  LiangClip\LiangClip.aps

     文件       3826  2015-12-11 20:32  LiangClip\LiangClip.clw

     文件       4263  2015-12-06 15:26  LiangClip\LiangClip.cpp

     文件       5009  2015-12-06 19:56  LiangClip\LiangClip.dsp

............此处省略30个文件信息

评论

共有 条评论