代码之家  ›  专栏  ›  技术社区  ›  martinez314

用椭圆画笔填充两点间像素的最快方法?

  •  0
  • martinez314  · 技术社区  · 15 年前

    假设我正在创建一个基于光栅的绘制程序。我的画笔是椭圆形的。用户单击,然后拖动鼠标绘制一个区域。我现在有两个点:点A(点击的地方)和点B(鼠标拖动返回的第一个点)。我要填充画笔区域内的所有像素。最好的方法是什么?

    我的第一个方法是计算两点之间的斜率,然后从点A到点B递增。对于中间的每个点,我搜索椭圆范围内的所有像素,如果它们在范围内,则打开它们。但这似乎效率很低,因为像素经常会被检查不止一次——通常是多次检查,因为增量比椭圆小得多(想想维恩图)。

    有更好的方法吗?一种效率更高、像素需要检查的次数最少的方法。

    1 回复  |  直到 14 年前
        1
  •  0
  •   justin    14 年前

    我目前正在做一些非常相似的事情,可以告诉你我在做什么:

    • 鼠标移动,我接收鼠标所在的点(x,y)
    • 我使用Bresenham算法来估计从一个鼠标位置到下一个鼠标位置的直线(我不会为每个像素都获取鼠标移动事件)。
    • 然后我用适当的间距(20%的刷子)沿着线条“戳”(又名“画”)我的刷头(圆圈)。

    因为我不知道你使用什么编程语言/框架,所以我不能给你代码:)

    推荐文章