XAML Wpf/WinRT点绘制心形

5m1hhzi4  于 2023-01-15  发布在  其他
关注(0)|答案(5)|浏览(180)

我一直在画布上画各种各样的形状,我已经设法找出数学方法来画六边形、八边形,甚至星星。我似乎不知道如何画一个心形。有人能举一个画心形所需的点的例子吗?

koaltpgm

koaltpgm1#

在我看来,你可以画两条弧,作为两个上相交圆的一部分,这两个圆的圆心在同一个X轴上;然后用两条较低的线把它们连在一起。我试着画一个例子,我希望这幅画足够有暗示性:

wkyowqbh

wkyowqbh2#

要使用容器缩放心脏,可以通过编程生成一个PathGeometry,它不是心脏的完美表示,但我更喜欢这个稍微调整的版本,它是我根据公认的答案即兴创作的。

double height = 256, width = 256;

var data =
    $"M {width / 2},{height / 7} " +
    $"A 20,20 0 0 0 {width / 7},{height / 2}" +
    $"L {width / 2},{height} " +
    $"L {width / 7 * 6},{height / 2}" +
    $"A 20,20 0 0 0 {width / 2},{height / 7}";

return System.Windows.Media.Geometry.Parse(data);
laximzn5

laximzn53#

我不确定是否有一种真正简单的方法可以直接在Canvas上绘制方程(尽管你肯定可以通过编程从方程中创建Path。根据你想对形状做什么,以及你想在哪里使用它,你可以只使用Path Markup Syntax定义一个Path,并使用一些内置的弧线和曲线。
例如(快速将这一条放在一起):

<Canvas>
    <Path Stroke="Red" StrokeThickness="3" 
        Data="M 241,200 
              A 20,20 0 0 0 200,240
              C 210,250 240,270 240,270
              C 240,270 260,260 280,240
              A 20,20 0 0 0 239,200
              " />
</Canvas>

将创建如下所示的内容:

它使用2个弧和2个三次贝塞尔曲线。
你可以阅读更多关于语法链接的内容,但只是一个小小的解释(下面画了半个心形,从心形顶部的凹陷到底部的点,逆时针方向):

M 241,200             // Move to (241, 200)
A 20,20 0 0 0 200,240 // Draw an arc from current position to (200,240), with a size of 20x20 pixels
C 210,250 240,270 240,270 // Draw a cubic Bezier to point (240,270) with control points at (210,250), (240,270).

下一条曲线,然后弧被绘制,到达顶部,完成形状。
你可能要玩一点,以获得你所追求的结果。

x7rlezfr

x7rlezfr4#

有很多数学方程可以描述心脏的形状a-有些是极坐标的,有些是参数的。
一个特别有说服力的例子是:

x = 16sin^3(t)
y = 13cos(t) - 5cos(2t) - 2cos(3t) - cos(4t)

这里有一个好的列表on the Woflram website

v440hwme

v440hwme5#

你可以用下面的方程在图上画出一颗心脏。
((x^2 + y^2 - 1)^3)-(x^2 * y^3)= 0

来源:Wikipedia

相关问题