Bitmap 任意切割算法

在这篇文章中主要讲述bitmap 被任意切割的话,如何将被切开的两块拿出来呢?
  首先我们先看下图:

当一条直线AB 和蓝色部分如上图那样切割的话,我们将如何去拿出切看后的两个部分。
那么做法无疑是:
1. 将直线在bitmap 上标记起来这里标记的好,可以将直线在bitmap 里的坐标记录下来,如果Bitmap中可以区分前景和背景色,那么就可以使用一种非前景活着背景色的颜色直接在bitmap上作标记。
     当然这里的标记算法不可能使用数学上的解析几何的理论,那么就要使用图形学中的bresenham 直线生成算法,这样才能将bitmap 中的每个象素进行切割。
2.直线在图形上描绘出来了,那么我们如何扫描位图 ,才能取出来切割的部分,这个阶段就是要 确定扫描方式水平扫描 还是 垂直扫描。 这些就是这个 阶段要进行处理的。
   如何确定扫描方式?不是没有办法,我们可以借助区域直线裁减算法,给直线AB进行裁减 ,裁减的大小是比位图略大,图中的那个 红色的框,那么将和直线AB相交为CD,分别给C 和D 进行区域编码,就可以确定C,和 D在那个区域了,只要确定了区域,那么 就可以进行确定扫描方式了。
3. 按已确定的扫描方式将bitmap 中的像素搬到一个新的空间,这样就可以形成两个bitmap了。如上图: 根据2 步可以确定为水平扫描,那么对待bitmap从左到右,依次进行像素的搬家直到遇到直线像素点的时候, 进行下一行像素的搬家。
4.按新空间的像素和余下来的像素分别创建bitmap 即可。

后面我会详细说明Bresenham 直线生成算法,区域裁减算法,bitmap 生成算法等。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值