看图片。形状小矩形有不同的线宽。指向大中心矩形的线更粗。以左上角为例:to 线和左边的比右边的和底部的要细。首先,我虽然这是一种视错觉,但不是。屏幕截图是在模拟器上以 100% 拍摄的。
下面用于绘制视图的代码来自 UIView 子类的 DrawRect():
public override void Draw (RectangleF rect)
{
rect = this.Bounds;
CGContext oCtx = UIGraphics.GetCurrentContext();
oCtx.SetFillColor(UIColor.Clear.CGColor);
oCtx.ClearRect(rect);
oCtx.SetLineWidth(2f);
oCtx.SetFillColor(this.BackgroundColor.CGColor);
oCtx.SetStrokeColor(this.BackgroundColor.CGColor);
oCtx.SetAlpha(this.Alpha);
oCtx.AddRect(new RectangleF(rect.X + HANDLE_WIDTH * 0.5f, rect.Y + HANDLE_HEIGHT * 0.5f, rect.Width - HANDLE_WIDTH, rect.Height - HANDLE_HEIGHT));
oCtx.FillPath();
oCtx.SetAlpha(1f);
oCtx.AddRect(new RectangleF(rect.X, rect.Y, HANDLE_WIDTH, HANDLE_HEIGHT));
oCtx.AddRect(new RectangleF(rect.Right - HANDLE_WIDTH, rect.Y, HANDLE_WIDTH, HANDLE_HEIGHT));
oCtx.AddRect(new RectangleF(rect.Right - HANDLE_WIDTH, rect.Bottom - HANDLE_HEIGHT, HANDLE_WIDTH, HANDLE_HEIGHT));
oCtx.AddRect(new RectangleF(rect.X, rect.Bottom - HANDLE_HEIGHT, HANDLE_WIDTH, HANDLE_HEIGHT));
oCtx.StrokePath();
#if DEBUG
oCtx.SetAlpha(0.2f);
oCtx.SetFillColor(UIColor.DarkGray.CGColor);
oCtx.AddRect(this.GetMovableArea(rect));
oCtx.FillPath();
#endif
}
有人可以解释为什么笔画宽度不同吗?我也尝试改用 StrokeRect() - 结果相同。我什至删除了所有的绘图代码,除了左上角的矩形没有改变。常量 HANDLE_HEIGHT 和 HANDLE_WIDTH 都设置为 20f。