用.net开发图形学大作业的一点建议

本文分享了使用.NET进行图形学大作业时的一些实用技巧,包括如何实现鼠标拖动画图形,.NET中画点的方法,以及提高填充图形效率的策略。通过优化getPixel()和setPixel()操作,利用BitmapData提升性能,实现了快速的图像处理。
摘要由CSDN通过智能技术生成

        似乎很多同学这学期都选择了图形学,但图形学肯定会有一个大作业让每个同学写一个类似Windows绘图的软件,我刚刚写好,其中有些小技巧,和大家分享一下。 

1、如何实现鼠标拖动画图形 即用鼠标单击一下绘图板 然后拖动画出一条线或其他图形。

我找到两个方法。1、首先我们将一个位图作为picturebox的image属性。如:pictureBox1.Image = bitmap;这样没当我刷新的时候就可以将pictureBox1的内容设为bitmap。然后我们在mousemove的过程中将将直线画到picturebox的Graphics上。每次画之前都调用。 pictureBox1.Refresh();  最后我们在mousedown事件中将最后的位图绘制到bitmap的Graphics上。再次调用 pictureBox1.Refresh();  2、我们可以将绘制的图形存入一个队列中当需要刷新的时候,将队列里面的元素全部在绘制一边,这样还可以实现undo操作。 

2、.net中画点

我写作业时好像发现.net中没有花点的函数,于是搜了一下,找到两个比较简单的方法。1.通过填充矩形函数g.FillEllipse(pen.Brush, X, Y, width, width);。2、直接改写Bitmap中的像素的颜色。 bitmap.SetPixel(p.X, p.Y, color);

3、填充图形

这个我觉得在作作业中最有意思,因为我的算法快了7倍。

呵呵 第一次我用种子填充算法直接的绘制,可是过了十五秒钟才把我要的图象填充完毕(200*200的矩形)。

第二次我改用扫描线法,将速度提高到5秒。可是我还是不能忍受填充的速度。

最后,我终于发现真正慢的原因是.net 中Bitmap的getPixel()和setPixel().两个方法,因为我将整个图形的背景用这两个方法设成白色需要很

图形学大作业----内容 一、主菜单的菜单项 基本图形绘制、图形变换、自由曲线绘制、图形裁剪、图形填充 二、二级子菜单(基本图形绘制) 1.直线绘制: 1)Bresenham绘制直线 2)DDA绘制直线 3)改进的Bresenham绘制直线 4)系统库函数绘制直线——直线线宽、线形设计 2.绘制圆(中点Bresenham) 3.Bresenham绘制椭圆 4.矩形、正方形的绘制 5.任意多边形的绘制 6.任意圆弧的绘制 三、二级子菜单(图形变换) 1.基本图形变换 1)平移变换 2)比例变换(等比例、不等比例) 3)错切变换(x方向、y方向、x-y方向) 4)对称变换(坐标轴、原点、45°直线) 5) 旋转变换(顺时针旋转、逆时针旋转) 2.复合变换(两次变换) 1)复合平移变换 2)复合比例变换 3)复合旋转变换 3.相对任意参考点的比例变换 4.相对任意直线的错切变换 四、二级子菜单(自由曲线绘制) 1. Bezier 曲线绘制 1)1次Bezier曲线 2)2次Bezier曲线 3)3次Bezier曲线 2. 3次B样条曲线 3. Hermite三次样条曲线 4. 2次Bezier曲线的拼接 五、二级菜单(图形裁剪和图形填充) 1.图形裁剪(直线裁剪) 2.图形填充 附加: 撰写大作业要求: 1)要求作品的系统设计结构合理,条理清晰,界面友好;具有较强的交互能力,完成功能。 2)要求使用visual studio进行系统开发,提供源代码项目文件夹和可执行文件(生成release的exe文件)。 3)大作业报告要求撰写字迹工整,条理清晰,语言流畅。 内容包括:1)设计概述 2)软硬件运行环境 3)系统功能设计(系统功能图) 4)算法原理 5)成果展示(打印,并裁剪为合适大小,粘贴在报告中。) 6)实现代码(打印) 7)个人总结
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值