C# Buttons als Ring anordnen



  • Hallo,

    ich suche nach einer Lösung wie ich Buttons als Ring anordnen kann. Am besten auch noch über einen "Container" gesteuert, sodass man dynamisch Buttons hinzufügen und löschen kann.

    Hier eine Verbildlichung:
    http://www.imagebanana.com/view/3zdahgsx/Unbenannt.png

    Kennt jemand ein solches Steuerelement?
    Ich entwickle unter Visual Studio 2010 und C#.

    Gruß VRComputing



  • WPF oder WinForms?



  • Ist mir eigentlich egal. Hauptsache ich kann es in C# verwenden.



  • VRComputing schrieb:

    Ist mir eigentlich egal. Hauptsache ich kann es in C# verwenden.

    Das macht einen recht grossen Unterschied; und mit C# selbst kommst du da nicht sehr weit. Hier ein Beispiel mit WPF auf Windows 8 (ich hatte gerade was ähnliches zur Hand):

    <Window x:Class="WpfApplication1.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="480" Width="480">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="*"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <Grid Grid.Column="1" Grid.Row="1" Height="320" Width="{Binding RelativeSource={RelativeSource Self}, Path=Height}">
                <Grid.Resources>
                    <Style TargetType="Button" x:Key="RingButtonStyle">
                        <Setter Property="Height" Value="40"/>
                        <Setter Property="Width" Value="120"/>
                    </Style>
                </Grid.Resources>
                <Button Content="Dieser" Style="{StaticResource ResourceKey=RingButtonStyle}">
                    <Button.RenderTransform>
                        <TransformGroup>
                            <TranslateTransform Y="160"/>
                            <RotateTransform Angle="0" CenterX="60" CenterY="20"/>
                        </TransformGroup>
                    </Button.RenderTransform>
                </Button>
                <Button Content="Ring" Style="{StaticResource ResourceKey=RingButtonStyle}">
                    <Button.RenderTransform>
                        <TransformGroup>
                            <TranslateTransform Y="160"/>
                            <RotateTransform Angle="60" CenterX="60" CenterY="20"/>
                        </TransformGroup>
                    </Button.RenderTransform>
                </Button>
                <Button Content="aus" Style="{StaticResource ResourceKey=RingButtonStyle}">
                    <Button.RenderTransform>
                        <TransformGroup>
                            <TranslateTransform Y="160"/>
                            <RotateTransform Angle="120" CenterX="60" CenterY="20"/>
                        </TransformGroup>
                    </Button.RenderTransform>
                </Button>
                <Button Content="Buttons" Style="{StaticResource ResourceKey=RingButtonStyle}">
                    <Button.RenderTransform>
                        <TransformGroup>
                            <TranslateTransform Y="160"/>
                            <RotateTransform Angle="180" CenterX="60" CenterY="20"/>
                        </TransformGroup>
                    </Button.RenderTransform>
                </Button>
                <Button Content="ist" Style="{StaticResource ResourceKey=RingButtonStyle}">
                    <Button.RenderTransform>
                        <TransformGroup>
                            <TranslateTransform Y="160"/>
                            <RotateTransform Angle="240" CenterX="60" CenterY="20"/>
                        </TransformGroup>
                    </Button.RenderTransform>
                </Button>
                <Button Content="toll" Style="{StaticResource ResourceKey=RingButtonStyle}">
                    <Button.RenderTransform>
                        <TransformGroup>
                            <TranslateTransform Y="160"/>
                            <RotateTransform Angle="300" CenterX="60" CenterY="20"/>
                        </TransformGroup>
                    </Button.RenderTransform>
                </Button>
            </Grid>
        </Grid>
    </Window>
    

    Ergibt folgendes Bild: http://imgur.com/qXZYc3l

    Man beachte: Keine einzige Zeile C# Code sichtbar für den Entwickler. Weiterhin: Mit Windows Forms kannst du sowas gleich ganz kippen. Geht nicht vernünftig.

    Wenn du die Button noch Rund haben willst, dann musst du die selbst vererben mit einem eigenen Button Template.

    Etc.



  • Also das ist schon mal ein guter Anfang. Wenn ich jetzt noch die Buttons rund bekomme habe ich genau was ich wollte. Danke.


Anmelden zum Antworten