资源简介
基于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操作excel
- mfc单文档画图,可改颜色,设置线条
- 基于MFC的个人通讯录管理系统
- mfc经典例程150例
- 基于MFC对话框的UDP客户端服务器端程
- OpencV与MFC综合应用.rar
- FTP服务器MFC源码
-
MFC写的MediaPla
yer播放器简单 - MFC教程.ppt
- VS2013 MFC 编程基础19个专题
- MFC实现应用程序最小化到系统托盘
- 一个POP3协议 MFC程序
- C++ MFC扫雷源码
- SiamFC文档
- 迷宫求解MFC
- MyTask.zip
- MFC_图片缩放
- MFC 实现ATM系统
- MFC读文件数据画波形,并作出分析
- C++ MFC图书管理系统(Access数据库)
- MFC漂亮界面
- EasySize
- MFC编写一个简单的登录对话框(连数
- 基于MFC基本对话框的CSocket局域网通信
- MFC串口数据绘图
- 操作系统课设源代码 模拟进程的并
- 自己做的C++MFC计算器程序
- 基于CSerialPort串口工具MFC Demo源码
- Visual C++MFC编程实例
- TCPIP实用程序&温度数据采集系统程序
评论
共有 条评论