资源简介
基于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个文件信息
- 上一篇:MT一维正演
- 下一篇:jpeg压缩纯C语言实现
相关资源
- 基于mfc的多线程文件传输
- MFC数字钟(基于VC6.0)
- VC++MFC小游戏实例教程(实例)+MFC类库
- ChartCtrl控件库(可在VS2019中使用)
- 商品库存管理系统 C++ MFC
- mfc 调用redis
- MFC视频播放器源码(支持avi/wma/mp3等格
- mfc绘图大全(画直线、矩形、椭圆)
- MFC控件重绘
- hook,捕获所有案件,查找所有窗口,
- (学习)VS2010之MFC入门到精通教程
- 对话框中实现浮动工具栏
- MFC文档_视图_框架_模板结构体系深入
- 简单员工管理系统(适合初学MFC)
- MFC五子棋游戏
- MFC UDP编程
- MFC的异步网络通讯应用程序
- C++MFC模块讲解,黑发程序员课程整理
- 一个简单而强大的基于MFC的web server源
- 基于MFC的VC++仿QQ浏览器源码(雏形)
- MFCaccess.rar
- VC++MFC课程设计的学生成绩管理系统
- MFC 日历控件 万年历 Calendar自绘
- CrystalDiskInfo-HDD/SSD硬盘信息,SMART信息
- MFC自定义界面HUI,高效简单,含详细
- 仿射密码-Affine cipher
- c++MFC车牌自动识别定位,只能定位和
- mfc+sql 酒店客房管理系统
- 基于图割的图像分割OpenCV+MFC实现
- MFC绘制Bezier曲线B样条曲线曲线拟合
评论
共有 条评论