问题描述
如何使用JES编写程序以在水平方向上的图像上绘制白色"网格线网格线相隔10个像素,垂直网格线相隔20像素?
是的,令人惊讶的是,addLine(picture, startX, startY, endX, endY)
只能画黑线!
因此,我们手动进行操作.这是一个非常基本的实现:
def drawGrid(picture, color):
w = getWidth(picture)
h = getHeight(picture)
printNow(str(w) + " x " + str(h))
w_offset = 20 # Vertical lines offset
h_offset = 10 # Horizontal lines offset
# Starting at 1 to avoid drawing on the border
for y in range(1, h):
for x in range(1, w):
# Here is the trick: we draw only
# every offset (% = modulus operator)
if (x % w_offset == 0) or (y % h_offset == 0):
px = getPixel(picture, x, y)
setColor(px, color)
file = pickAFile()
picture = makePicture(file)
# Change the color here
color = makeColor(255, 255, 255) # This is white
drawGrid(picture, color)
show(picture)
注意:这也可以使用功能drawLine()从.
输出:
....... ......... .......
How can I write a program using JES to draw "White" gridlines on an image where the horizontalgridlines are separated by 10 pixels and the vertical gridlines are separatedby 20 pixels?
Yes, surprisingly, addLine(picture, startX, startY, endX, endY)
can only draw black lines !?
So let's do it by hand. Here is a very basic implementation:
def drawGrid(picture, color):
w = getWidth(picture)
h = getHeight(picture)
printNow(str(w) + " x " + str(h))
w_offset = 20 # Vertical lines offset
h_offset = 10 # Horizontal lines offset
# Starting at 1 to avoid drawing on the border
for y in range(1, h):
for x in range(1, w):
# Here is the trick: we draw only
# every offset (% = modulus operator)
if (x % w_offset == 0) or (y % h_offset == 0):
px = getPixel(picture, x, y)
setColor(px, color)
file = pickAFile()
picture = makePicture(file)
# Change the color here
color = makeColor(255, 255, 255) # This is white
drawGrid(picture, color)
show(picture)
Note : this could also have been achieved a lot more efficiently using the function drawLine(), from the script given here.
Output:
.......................
这篇关于使用JES(python)在图像上的白色网格线的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!