Pregunta

No creo que esto sea bastante posible, pero vale la pena intentar ver lo que ustedes dicen. Estoy tratando de crear un botón medio elíptico en C # (no XAML, que podría atravesar otra bola curva). Si quisiera un tamaño predeterminado para los botones, simplemente usaría imágenes o algo así, pero ese no es el caso ya que el tamaño cambia. Aquí hay más detalles:

  1. Tengo una elipse con radio xy radio y (o ancho y alto, respetuosamente multiplicado por 2).

  2. Quiero dos botones para llenar toda la elipse, cada uno ocupando la mitad de la elipse.

  3. No quiero un botón rectangular que se extienda más allá de la elipse y se acorte al padre, quiero botones elípticos reales, excepto solo la mitad de una elipse por botón.

  4. Si esto no se puede lograr usando botones, pero usando algún otro control, entonces me gustaría que ese control pueda actuar como un botón.

Cualquier ayuda o consejo o punteros serían de gran ayuda.

¿Fue útil?

Solución

Antes de responder esto, me encantaría saber ¿POR QUÉ debe evitar XAML en una aplicación WPF? Seguramente usarías XAML de manera indirecta, así que ¿por qué no usarlo? ¡Hacer que tu botón sea pan comido! ¡Para eso es exactamente!

¡Esto es como tratar de hacer una casa con cinta adhesiva cuando estás parado al lado de ladrillos y mortero! :)

Otros consejos

Use XAML, en serio XAML puede parecer desalentador al principio, pero no es nada como el dolor de cabeza que está creando para usted mismo al tratar de hacer esto únicamente en el código subyacente.

Botón WPF personalizado Estilo

Introducción paso a paso al estilo con Blend

XAML Nivel 100

Tendrá que agregar activadores adicionales (como IsPressed), pero esto debería darle una idea bastante buena:

<Button Height="30" Width="30">
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>
                        <Path Name="HalfEllipse" Stroke="Black" StrokeThickness="1" Fill="Blue">
                            <Path.Data>
                                <PathGeometry>
                                    <PathFigure IsFilled="True" StartPoint="0,0">
                                        <PolyBezierSegment Points="5,30 25,30 30,0" />
                                    </PathFigure>
                                </PathGeometry>
                            </Path.Data>
                        </Path>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="HalfEllipse" Property="Fill">
                                    <Setter.Value>
                                        <SolidColorBrush Color="Green"/>
                                    </Setter.Value>
                                </Setter>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Button.Style>
</Button>

Consulte esta página para obtener más información: http://www.codeproject.com/ KB / WPF / glassbuttons.aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top