3

パネルSystem.Windows.Shapes.Ellipse内でドラッグ、回転、サイズ変更できるプログラムがあります。Canvas

楕円のサイズを変更してキャンバス内にドラッグし、常に中心に保つには、楕円の原点が左上隅にあるため、原点を毎回修正する必要があります。

デフォルトで原点をEllipseオンセンターにする方法はありますか?

引っ張る:

Canvas.SetTop(ellipse, newX - (ellipse.Height / 2));
Canvas.SetLeft(ellipse, newY - (ellipse.Width / 2));

サイズ変更:

ellipse.Height = newHeight;
ellipse.Width = newWidth;

回転:

ellipse.RenderTransform = new RotateTransform(angle,(ellipse.Width/2),(ellipse.Height/2));
4

2 に答える 2

5

幅と高さが固定されている場合、最も簡単な解決策は、楕円RenderTransformTranslateTransformwithXY設定し、楕円の幅と高さの半分に等しい負のオフセットにそれぞれ設定することです。

<Ellipse Width="100" Height="100" Fill="Red">
  <Ellipse.RenderTransform>
    <TranslateTransform X="-50" Y="-50" />
  </Ellipse.RenderTransform>
</Ellipse>

を使用する際の注意点は、変換がレイアウトに適用されないことです (また、 にをRenderTransform使用することはできません)。他のパネルでは問題になる可能性がありますが、レイアウトの処理方法のため、これは問題にはなりません。TranslateTransformLayoutTransformCanvas

于 2013-10-29T18:20:31.977 に答える
0

Margin プロパティを使用できます。

<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="600" Width="600">
    <Grid>
        <Canvas Width="300" Height="300">
            <Ellipse x:Name="ellipse" 
                     Canvas.Left="150" Canvas.Top="150" 
                     Width="50" Height="50" 
                     Margin="-25,-25" 
                     Stroke="Red"/>
        </Canvas>
    </Grid>
</Window>
于 2014-10-17T18:32:39.367 に答える