我试图在用户点击图像的地方画圆圈。我有一张和图像一样大的画布来画它们。我得到了正确的点击位置,我使用下面的代码来绘制椭圆,几乎可以工作,只是每个后续的点击,下一个椭圆被绘制在前一个下面,即使你沿着x轴移动,它仍然绘制在前一个下面。下面绘制的量是椭圆的大小。每次点击我都在向名为ClickedPositions的observablecollection添加一个位置。
<Canvas>
<ItemsControl ItemsSource="{Binding ClickedPositions}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Ellipse Width="5" Height="5" Fill="Red">
<Ellipse.RenderTransform>
<TranslateTransform X="{Binding X}" Y="{Binding Y}" />
</Ellipse.RenderTransform>
</Ellipse>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Canvas>
字符串
的数据
在这里你可以看到我在同一个地方点击了6次,第一个圆圈是正确的,然后每个后续的圆圈都被绘制在前一个圆圈的“下方”。然后我把鼠标移到右边,点击了两次,你可以看到它仍然被绘制在前一个的“下面”。
我错过了什么?
谢啦,谢啦
1条答案
按热度按时间8qgya5xd1#
Canvas需要声明为ItemsControl的
ItemsPanel
。默认ItemsPanel是垂直StackPanel。字符串
您也可以设置项目容器的
Canvas.Left
和Canvas.Top
属性,而不是设置Ellipse的RenderTransform:型
最后要注意
X
和Y
是椭圆边界框左上角的坐标。要绘制居中的形状,请使用带有EllipseGeometry的Path:型