查看: 2794|回复: 1

[已经解决] 請問如何給BITMAP類增加一個會制填滿圓形的命令?

[复制链接]
梦石
0
星屑
55
在线时间
461 小时
注册时间
2008-11-19
回帖
525
发表于 2012-6-15 20:31:35 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
這是我在古老的帖子中找到的話圓圈的方法
  1. class Bitmap
  2. # 描绘圆
  3. def draw_circle(a, b, r, color)
  4.    min = (-r / Math.sqrt(2)).round
  5.    max = ( r / Math.sqrt(2)).round
  6.    for x in min..max
  7.      y = Math.sqrt(r**2 - x**2)
  8.      set_pixel(x+a, y+b, color)
  9.      set_pixel(x+a, -y+b, color)
  10.    end
  11.    for y in min..max
  12.      x = Math.sqrt(r**2 - y**2)
  13.      set_pixel(x+a, y+b, color)
  14.      set_pixel(-x+a, y+b, color)
  15.    end
  16. end
  17. end
复制代码
不過我想要的是內部填滿的圓形...
請問有大大能幫忙調整嗎?

点评

另写dll吧,逐像素描绘效率太低了  发表于 2012-6-15 21:04
梦石
0
星屑
8003
在线时间
1184 小时
注册时间
2007-7-29
回帖
2014
发表于 2012-6-16 08:50:55 | 显示全部楼层
  1. def draw_circle(a, b, r, color)
  2.    min = (-r / Math.sqrt(2)).round
  3.    max = ( r / Math.sqrt(2)).round
  4.    for x in min..max
  5.      y = Math.sqrt(r**2 - x**2)
  6.      fill_rect(x+a,-y+b,1,(2*y).ceil,color)
  7.      #set_pixel(x+a, y+b, color)
  8.      #set_pixel(x+a, -y+b, color)
  9.    end
  10.    for y in min..max
  11.      x = Math.sqrt(r**2 - y**2)
  12.      fill_rect(-x+a,y+b,(2*x).ceil,1,color)
  13.      #set_pixel(x+a, y+b, color)
  14.      #set_pixel(-x+a, y+b, color)
  15.    end
  16. end
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部