【发布时间】:2016-03-03 13:36:48
【问题描述】:
在 TkInter 中使用此函数调用时:
canvas.create_rectangle(canvas.create_rectangle(x0, y0, x0+xsize, y0+ysize,
outline="black", width=outline_width)
我想要一个可以预测大小的矩形。问题在于,根据outline_width,整体矩形大小会有所不同。
例如,如果我保持不变
(xsize, ysize) = (20,20)
在改变outline_width 时,我得到了奇怪的尺寸。例如 outline_width=1 给出一个 21px 的正方形,而使用 outline_width=4 给出一个 24px 的正方形。
这对我来说是个大问题,因为如果我无法预测矩形的大小(即包括轮廓在内的大小),我的整个绘图都会受到影响。
例如,看起来矩形的总 x 宽度将由 (xsize+outline_width) 确定。但另一个问题是矩形左上角的位置也因轮廓宽度而异。
任何解决方案可以准确地确定矩形在左上角的位置,并确定最终大小?
编辑:包括一张图片。请注意矩形是如何从窗口的两个完全不同的位置(在 X 轴上)“开始”的,并绘制了一条红线以供参考。
我真的希望无论outline_width 的值如何,左上角都保持不变。或者至少能够知道它会向右移动多少,这样我就可以改变我的坐标来补偿它。
谢谢
【问题讨论】:
-
“矩形左上角的位置也因轮廓宽度而异”它如何变化?
-
无法准确告诉您它是如何变化的,因为这正是我的问题的全部内容(我不知道),但它显然确实如此。例如,如果我使用 3 的轮廓宽度,我的矩形“开始”x 方向的坐标是 9,而如果我使用 10 的轮廓宽度,它“开始”在 5。似乎没有多大意义我(相对于窗口上真正的固定点测量)。
-
这很有趣 - 我认为我不会将其称为边框宽度,而是将其称为边框宽度,因为看起来笔画宽度的一半在边框内,一半在边框外。如果你想要一个更可预测的行为,你可能不得不自己动手......
-
@Wayne Werner 是的,将其称为“大纲”对我来说没有多大意义,我将不得不求助于由 4 个线段组成我自己的方形函数
-
@Yannick 不确定它是否会更好,但您可以考虑在您绘制的框外仅绘制 2px 大的框,轮廓宽度为 1px。