【问题标题】:How to draw custom rectangles in java如何在java中绘制自定义矩形
【发布时间】:2014-04-30 23:43:11
【问题描述】:

我要问的内容几乎是重复的:almost duplicate

但我想在顶部制作圆角。

我试图修改查看the documentation 的代码,但我对Java 中的这幅图很陌生,我没有让它工作。 :/

所以我的问题是,我该如何修改:

moveTo(0,0);
lineTo(0, radius);
curveTo(0, 0, radius, radius, 0, radius);
lineTo(width, height - radius);
curveTo(width, height, width, height, width - radius, height);
lineTo(0, height);
closePath();

使圆角成为顶角。

我非常感谢所有可以帮助我的答案。

谢谢

【问题讨论】:

    标签: java draw drawrectangle path-2d


    【解决方案1】:

    关键是你想可视化代码是如何绘制对象的。原代码从左上角开始按顺时针方向绘制。

    首先,您需要移动起点,如果您从拐角而不是圆边开始,这会容易得多。

    接下来,您需要修改绘图,以便在正确的位置修圆边缘。

    moveTo(0, height);
    lineTo(0, radius);
    curveTo(0, 0, 0, 0, radius, 0);
    lineTo(width - radius, 0);
    curveTo(width, 0, width, 0, width, radius);
    lineTo(width, height);
    closePath();
    

    所以,我在这里所做的是:

    1. 从左下角开始
    2. 垂直移动到位于左上角的曲线起点
    3. 在左上角画曲线
    4. 水平移动到位于右上角的曲线起点
    5. 在右上角绘制曲线
    6. 垂直移动到右下角
    7. 关闭形状(水平移动到左下角)

    【讨论】:

    • 感谢您的精彩回答!这真的让我很清楚如何思考。如果您愿意,您可以更多地了解第 3 步和第 5 步,使用曲线,了解如何使用 3 个不同的 x&y 点绘制曲线。我会尽快尝试一下,看看它是否有效。
    • @raxelsson,curveTo 方法绘制了一条“与当前坐标和指定坐标 (x3,y3) 相交的贝塞尔曲线”(reference, check the curveTo methods)。您可能想查看 Wikipedia 以了解有关贝塞尔曲线的更多信息,但本质上这两个点相同的原因是将其转换为二次贝塞尔曲线。
    • 再次感谢! @user3507600
    猜你喜欢
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多